# A game of Dudo
<hr>
<div#desc></div>
<div#guess>
Guess the number:</br>
<a0.guess-num>1</a>
<a0.guess-num>2</a>
<a0.guess-num>3</a>
<a0.guess-num>4</a>
<a0.guess-num>5</a>
<a0.guess-num>6</a>
<a0.guess-num>7</a>
<a0.guess-num>8</a>
<a0.guess-num>9</a>
<a0.guess-num>10</a>
</br>of:</br>
<a0.guess-face>twos</a>
<a0.guess-face>threes</a>
<a0.guess-face>fours</a>
<a0.guess-face>fives</a>
<a0.guess-face>sixes</a>
</br></br>
<a0#guess-button>Bid</a>
<a0#call-button>CALL</a>
</div>
<a0#roll-button>Roll the dice</a>
<a0#reveal-button>Raise the cups</a>
<a0#continue-button>Next round</a>
<div#player-dice></div>
<div#enemy-dice></div>
</br>
<a0#help-button>"Remind me of the rules, Billy."</a>
<br><br>
<a0#wrapup-button>Continue</a>
<a0#forfeit-button>FORFEIT</a>
<% s.WON_DUDO = false %>
<div.editor>
[[Dudo/Forfeit]]
[[C1/D]]
</div>
<%
/*** GLOBALS START ***/
// global parameters
const PLAYER = "C";
const ENEMY = "Billy";
let PLAYER_DICE = 5;
let ENEMY_DICE = 5;
let diceFaces;
let rollingPlayer, rollingEnemy;
let playerRoll, playerDiceCount;
let playerGuess = {};
let enemyRoll, enemyDiceCount;
let enemyGuess = {};
let playerCalled;
// global DOM elements
let playerDiceArea, enemyDiceArea;
let descDiv, guessDiv;
let rollButton,
guessButton,
callButton,
revealButton,
continueButton,
helpButton,
wrapupButton,
forfeitButton;
/*** GLOBALS END ***/
/*** FUNCTIONS START ***/
function setupDOMElements() {
playerDiceArea = $("#player-dice");
enemyDiceArea = $("#enemy-dice");
descDiv = $("#desc");
guessDiv = $("#guess");
rollButton = $("#roll-button");
guessButton = $("#guess-button");
callButton = $("#call-button");
revealButton = $("#reveal-button");
continueButton = $("#continue-button");
helpButton = $("#help-button");
wrapupButton = $("#wrapup-button");
forfeitButton = $("#forfeit-button");
wrapupButton.hide();
}
function getDiceFaces() {
let dfStr = window.story.render("Dudo/Dice");
let df = $("<papari>").append($.parseHTML(dfStr));
let dfArr = [];
for (let i = 1; i <= 6; i++) {
dfArr.push(df.find(".face" + i));
}
dfArr.push(df.find(".face-unknown"));
return dfArr;
}
function rollDice(times) {
return [...Array(times).keys()].map((_) => window.either(1, 2, 3, 4, 5, 6));
}
function getRandomTaunt() {
let taunts = [
"Are ye plannin' to take all day, captain? I've seen storms pass quicker!",
"What's the matter, captain? Ye be too afraid to make a guess, or are ye just tryin' to get me hopes up?",
"Ye be stallin' like a ship stuck in the doldrums! Make yer guess, if ye dare!",
"Ye be ponderin' like ye've got a map of the seven seas in yer head. Just make a guess, already!",
"I've never seen a captain so hesitant to make a simple guess. Ye be testin' me patience, mate!",
"Ye be takin' longer than an old sea turtle tryin' to catch a breath! I've got all the time in the world, mate!",
"Are ye playin' the game or countin' the barnacles on yer ship's hull? Make a guess, if ye can!",
"Ye be actin' like a landlubber lost at sea, captain! I'll be here enjoyin' me grog while ye decide yer fate.",
"If ye keep thinkin' so hard, captain, ye might sprout seaweed from yer ears! Take a chance, if ye dare!",
"I can see the gears turnin' in yer head, captain. But watch out, they might rust from all this delay!",
"Ye be playin' the game as if yer life depends on it, captain. Maybe it does, and ye just don't know it yet.",
];
return window.either(taunts);
}
function beforeEnemyPlays() {
let enemyPlays = [
"Billy hopelessly tries to hide his excitement.",
"Billy's face betrays him. He doesn't seem sure at all about how to proceed in this battle of nerves with the Captain.",
"Billy feels like regaining his confidence in his wits and bluff skills after the Captain's bid.",
"Billy got lost following a seagull with his eyes. Violently, he shakes it off and refocuses on the task at hand.",
"Billy seems to enjoy all this a lot more than one would expect.",
"Billy's eyes shine with the excitement of the possibility of beating the very Captain.",
"Billy starts biting his nails nervously.",
"Billy takes a sip of rum before making his bid.",
"Billy seems lost in his thoughts. A finger snap by the Captain pulls him back to reality.",
];
return "<p>" + window.either(enemyPlays) + "</p>";
}
function enemyCalls() {
let calls = [
"Ye think ye can pull the wool over me eyes, Captain? Not a chance! LIAR!",
"Arr, ye thought ye could outwit me, did ye? Not this time, Captain. LIAR!",
"I've got yer number, Captain! Ye can't deceive me. LIAR, plain and simple!",
"Ye reckon ye can sail the sea of deceit, Captain? Well, ye just hit a reef. LIAR!",
"No use in tryin' to swindle me, Captain. I've got the nose for a lie. LIAR!",
"Ye took a gamble, Captain, but ye forgot who ye were playin' with. LIAR!",
"Ye may be the skipper, but ye can't steer clear of the truth. LIAR, I say!",
"Ah, Captain, ye underestimated this fresh-faced sailor. I may be green, but I've got an eye for truth. LIAR, plain and simple!",
"Arr, don't be thinkin' I'm just a clueless whelp, Captain. I may be young, but I've got me wits about me. LIAR, I say!",
"Ye may be the seasoned captain, but I reckon me youth gives me an advantage. I see through yer bluster. LIAR!",
"Ye may be older and wiser, Captain, but don't go believin' I'm a simpleton. I've got a knack for sniffin' out falsehoods. LIAR, plain as day!",
"Captain, me age may fool the others, but I'm sharper than they give me credit for. Ye won't get away with yer tricks. LIAR, I say!",
"Ahoy, Captain! Ye may think me young and naive, but don't discount me ability to see through yer deceit. LIAR, plain and true!",
"Ha! Ye thought me youth meant me mind was as empty as a sea breeze. Well, I'm here to prove ye wrong, Captain. LIAR, I declare!",
];
return window.either(calls);
}
let faceEncoder = {
ones: 1,
twos: 2,
threes: 3,
fours: 4,
fives: 5,
sixes: 6,
};
let faceDecoder = {
1: "ones",
2: "twos",
3: "threes",
4: "fours",
5: "fives",
6: "sixes",
};
function showGuessArea() {
// fresh guess for the player
playerGuess = {};
$("a.guess-num").show();
// remove illegal numbers
if (enemyGuess["num"] !== undefined) {
for (let i = 1; i < enemyGuess["num"]; i++) {
$("a.guess-num:exact('" + i + "')").hide();
}
}
// hide all num options that are greater from
// the total number of dice
for (let i = 10; i > PLAYER_DICE + ENEMY_DICE; i--) {
$("a.guess-num:exact('" + i + "')").hide();
}
// make sure all face opts are shown for now
$("a.guess-face").show();
guessDiv.show();
}
function countDice(diceroll) {
let dicecount = _.countBy(diceroll);
for (let i = 1; i <= 6; i++)
if (dicecount[i] === undefined) dicecount[i] = 0;
return dicecount;
}
function calculateCorrectProb(no, np) {
function factorial(n) {
let p = 1;
for (let i = n; i > 0; i--) p *= i;
return p;
}
function c(n, k) {
return factorial(n) / (factorial(k) * factorial(n - k));
}
if (no <= np) return 1.0;
let x = 0;
for (let i = no - np; i <= PLAYER_DICE; i++) {
x +=
c(PLAYER_DICE, i) *
Math.pow(1 / 3, i) *
Math.pow(2 / 3, PLAYER_DICE - i);
}
return x;
}
function findMaxFace(diceCount) {
let maxAmount = -1;
let maxFace = undefined;
for (let i = 2; i <= 6; i++) {
if (diceCount[i] > maxAmount) {
maxAmount = diceCount[i];
maxFace = i;
}
}
return maxFace;
}
function findWinner(playerCalled, playerDiceCount, enemyDiceCount) {
let guess = playerCalled ? enemyGuess : playerGuess;
let n = guess["num"];
let f = guess["face"];
let total =
playerDiceCount[f] +
enemyDiceCount[f] +
playerDiceCount[1] +
enemyDiceCount[1];
let guessCorrect = total >= n;
return playerCalled ? !guessCorrect : guessCorrect;
}
function getEnemyReaction(playerWon) {
let reactionsPlayerWon = [
"Arr, ye got me this time, Captain. I may be young, but I've got a lot to learn. Well played, well played indeed!",
"Ha, the captain strikes again! Ye've proven yer skill once more, but don't think I'll give up so easily. I'll be back, ready to take ye on again!",
"Ye've outsmarted me, Captain. I can't deny it. But I won't let this setback dampen me spirit. I'll be back with a vengeance!",
"Well, well, looks like ye've got the upper hand, Captain. But I won't let defeat discourage me. I'll keep practicing and come back stronger!",
"Ye've shown me who's the true master of the game, Captain. I'll take this loss as a lesson and work me way up to yer level. Ye haven't seen the last of me!",
"I may be young and still learning the tricks of the trade, but ye've proven ye've got the experience on yer side, Captain. Well played, well played indeed!",
"Ahoy, Captain! Ye've got me beat this time, but I'll take this defeat with grace. It's all part of me journey to become a formidable opponent. Watch out for me next time!",
"Captain, ye've taught me a valuable lesson in humility. Ye may have won this round, but I'll be back, ready to challenge ye once more. Prepare yerself!",
];
let reactionsPlayerLost = [
"Ha! Victory is mine, Captain! Ye thought ye could outwit me, but I've proven ye wrong. Aye, even the youngest can triumph!",
"Did ye see that, Captain? I've shown ye that age is just a number. The tables have turned, and I've emerged as the victor!",
"Arr, me fellow crewmates might think I'm a bit green, but today I've shown them what I'm made of. Victory is sweet, Captain!",
"Ye thought ye had me fooled, Captain, but I've proven ye wrong. Don't underestimate me, for I'm more cunning than I appear!",
"Ahoy, Captain! Ye may be the seasoned leader, but I've caught ye in me trap this time. Ye couldn't escape me cunning moves!",
"I've taken ye by surprise, Captain! Ye didn't see it coming, did ye? This victory is a testament to me determination and quick thinking.",
"Well, well, looks like the tables have turned. The young sailor has outplayed the captain! Aye, I've proven meself as a force to be reckoned with!",
"Captain, ye put up a good fight, but this time I've emerged as the victor. The crew won't be underestimating me anymore!",
"Victory tastes sweet, Captain! I've bested ye in this game, and it's a testament to me growth and progress. The future is bright!",
];
return window.either(playerWon ? reactionsPlayerWon : reactionsPlayerLost);
}
function guess2str(guess) {
let n = guess["num"];
let f = guess["face"];
let fstr = faceDecoder[f];
if (n === 1) fstr = fstr.slice(0, f < 6 ? -1 : -2);
return n + " " + fstr;
}
function rollAnim(area, nDice) {
area.empty();
rollDice(nDice).forEach((roll) => area.append(diceFaces[roll - 1].clone()));
}
// return true if they made a guess, false if they call
function enemyBids() {
let n = playerGuess["num"];
let f = playerGuess["face"];
// clear player's guess
// in case the player made the maximum possible bid,
// there is no choice but to call
if (n === PLAYER_DICE + ENEMY_DICE && f === 6) {
playerCalled = false;
return false;
}
// calculate the probability that the player's guess is correct
let pPlayerCorrect = calculateCorrectProb(
n,
enemyDiceCount[f] + enemyDiceCount[1]
);
if (pPlayerCorrect < 0.5) {
playerCalled = false;
return false;
}
// if n is max, raise face value
if (n === PLAYER_DICE + ENEMY_DICE) {
enemyGuess["num"] = n;
enemyGuess["face"] = f + 1;
return true;
}
// if face is max, raise n and choose the face with the highest amount
if (f === 6) {
enemyGuess["num"] = n + 1;
enemyGuess["face"] = findMaxFace(enemyDiceCount);
return true;
}
// else, both n and face can be raised
enemyGuess["num"] = n;
enemyGuess["face"] = f;
if (enemyDiceCount[f] + enemyDiceCount[1] - n < 2) {
enemyGuess["num"]++;
} else if (enemyDiceCount[f + 1] + enemyDiceCount[1] - n < 2) {
enemyGuess["face"]++;
} else {
enemyGuess["num"]++;
enemyGuess["face"] = findMaxFace(enemyDiceCount);
}
return true;
}
function initTurn() {
window.renderToSelector("#desc", "Dudo/Init");
playerGuess = {};
enemyGuess = {};
playerCalled = undefined;
rollButton.show();
guessDiv.hide();
callButton.hide();
revealButton.hide();
continueButton.hide();
// when the passage loads, randomly show dice
// until the player clicks on "roll the dice"
rollingPlayer = setInterval(
() => rollAnim(playerDiceArea, PLAYER_DICE),
200
);
rollingEnemy = setInterval(() => rollAnim(enemyDiceArea, ENEMY_DICE), 200);
}
/*** FUNCTIONS END ***/
/*** MAIN ***/
$(function () {
setupDOMElements();
diceFaces = getDiceFaces();
initTurn();
rollButton.on("click", function () {
$(this).hide();
clearInterval(rollingPlayer);
clearInterval(rollingEnemy);
playerDiceArea.empty();
playerDiceArea.html("The Captain's dice:</br>");
playerRoll = rollDice(PLAYER_DICE).sort();
playerDiceCount = countDice(playerRoll);
playerRoll.forEach((roll) =>
playerDiceArea.append(diceFaces[roll - 1].clone())
);
playerDiceArea.append("</br>");
enemyDiceArea.empty();
enemyDiceArea.html("Billy's dice:</br>");
enemyRoll = rollDice(ENEMY_DICE).sort();
enemyDiceCount = countDice(enemyRoll);
enemyRoll.forEach((_) => enemyDiceArea.append(diceFaces[6].clone()));
descDiv.append(window.story.render("Dudo/Roll"));
setTimeout(() => descDiv.append(s.say(ENEMY, getRandomTaunt())), 1000);
setTimeout(() => showGuessArea(guessDiv, enemyGuess), 2000);
});
$(".guess-num").on("click", function () {
if ($(this).hasClass("toggled")) return;
$("a.guess-num").removeClass("toggled");
$(this).addClass("toggled");
playerGuess["num"] = parseInt($(this).html());
// face options depend on number guessed
if (playerGuess["num"] === enemyGuess["num"]) {
for (let i = 1; i <= enemyGuess["face"]; i++) {
let faceStr = faceDecoder[i];
let faceOpt = $("a.guess-face:contains('" + faceStr + "')");
if (faceOpt.hasClass("toggled")) {
faceOpt.removeClass("toggled");
playerGuess["face"] = undefined;
}
faceOpt.hide();
}
} else {
$("a.guess-face").show();
}
});
$(".guess-face").on("click", function () {
if (!$(this).hasClass("toggled")) {
$("a.guess-face").removeClass("toggled");
$(this).addClass("toggled");
playerGuess["face"] = faceEncoder[$(this).html()];
}
});
guessButton.on("click", function () {
if (
playerGuess["num"] === undefined ||
playerGuess["face"] === undefined
)
return;
$("a.guess-num").removeClass("toggled");
$("a.guess-face").removeClass("toggled");
callButton.show(); // initialization had it hidden
guessDiv.hide();
descDiv.empty();
helpButton.hide();
let pre = window.either("", "I say ");
let post = window.either(".", ", Billy.", ", boy.");
descDiv.append(s.say(PLAYER, pre + guess2str(playerGuess) + post));
descDiv.append(beforeEnemyPlays());
// enemy thinking... and playing!
let newDiv = document.createElement("div");
descDiv.append(newDiv);
s.think(ENEMY, "", $(newDiv)).then(() => {
let phrase = "";
let enemyCalled = !enemyBids();
if (!enemyCalled) {
let pre = window.either("", "I say ");
let post = window.either("!", ", captain!", ".", ", captain.");
phrase = pre + guess2str(enemyGuess) + post;
} else {
phrase = enemyCalls();
}
descDiv.append(s.say(ENEMY, phrase));
if (!enemyCalled) showGuessArea(guessDiv, enemyGuess);
else revealButton.show();
helpButton.show();
});
});
callButton.on("click", function () {
$("a.guess-num").removeClass("toggled");
$("a.guess-face").removeClass("toggled");
guessDiv.hide();
descDiv.append(s.say(PLAYER, "You're a LIAR, Billy."));
descDiv.append(
s.say(ENEMY, "Ahoy, Captain! Let's see if yer thinkin' straight!")
);
playerCalled = true;
revealButton.show();
});
revealButton.on("click", function () {
$(this).hide();
$("#enemy-dice > svg").remove();
helpButton.hide();
enemyRoll.forEach((roll) =>
enemyDiceArea.append(diceFaces[roll - 1].clone())
);
let playerWon = findWinner(
playerCalled,
playerDiceCount,
enemyDiceCount
);
descDiv.append(
"<p>Both players lifted their cups and leant over the table, counting the dice, and it looks like...</p>"
);
setTimeout(() => {
let winner, loser, loserDice;
if (playerWon) {
winner = s.NAME_TRANS[PLAYER];
loser = s.NAME_TRANS[ENEMY].split(" ")[0];
loserDice = --ENEMY_DICE;
} else {
winner = s.NAME_TRANS[ENEMY].split(" ")[0];
loser = s.NAME_TRANS[PLAYER];
loserDice = --PLAYER_DICE;
}
descDiv.append(
"<p><strong>" + winner + " won the round!</strong></p>"
);
descDiv.append(
"<p>" +
loser +
" lost a die and is left with " +
loserDice +
".</p>"
);
}, 2000);
setTimeout(() => {
descDiv.append(s.say(ENEMY, getEnemyReaction(playerWon)));
if (PLAYER_DICE === 2 || ENEMY_DICE === 2)
continueButton.html("Finish game");
continueButton.show();
helpButton.show();
}, 3000);
});
continueButton.on("click", function () {
$(this).hide();
if ($(this).html() === "Finish game") {
descDiv.empty();
playerDiceArea.hide();
enemyDiceArea.hide();
let winner =
PLAYER_DICE === 2
? s.NAME_TRANS[ENEMY].split(" ")[0]
: s.NAME_TRANS[PLAYER];
descDiv.append(
"<p><strong>" + winner + " wins the game!</strong></p>"
);
descDiv.append(s.say(ENEMY, getEnemyReaction(ENEMY_DICE === 2)));
s.WON_DUDO = winner === s.NAME_TRANS[PLAYER];
if (s.WON_DUDO)
descDiv.append(
s.improveRel(
"Billy",
"is fascinated by the Captain's skills on Dudo"
)
);
helpButton.hide();
forfeitButton.hide();
wrapupButton.show();
} else {
playerDiceArea.empty();
enemyDiceArea.empty();
initTurn();
}
});
wrapupButton.on("click", function () {
if (s.CHAPTER === "1D") story.show("C1/D");
else if (s.WON_DUDO && (s.NEED_ALMANAC || s.NEED_EPHEMERIS))
story.show("Billy/Won Item");
else story.show("Main Deck");
});
forfeitButton.on("click", function () {
story.show("Dudo/Forfeit");
});
helpButton.on("click", function () {
descDiv.append(s.say(PLAYER, $(this).html().slice(1, -1)));
let pre = window.either("Sure thing, Captain! ", "Aye aye, Captain! ");
descDiv.append(s.say(ENEMY, pre + window.story.render("Dudo/Rules")));
});
});
%>
Both players strike the table with their cups upside down. It's showtime. The Captain plays first.<svg class="face1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path d="M0 0h512v512H0z" fill-opacity="0"></path><g class="" style="" transform="translate(0,0)"><path d="M74.5 36A38.5 38.5 0 0 0 36 74.5v363A38.5 38.5 0 0 0 74.5 476h363a38.5 38.5 0 0 0 38.5-38.5v-363A38.5 38.5 0 0 0 437.5 36h-363zM256 206a50 50 0 0 1 0 100 50 50 0 0 1 0-100z" fill="#fff" fill-opacity="1"></path></g></svg>
<svg class="face2" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path d="M0 0h512v512H0z" fill-opacity="0"></path><g class="" style="" transform="translate(0,0)"><path d="M74.5 36A38.5 38.5 0 0 0 36 74.5v363A38.5 38.5 0 0 0 74.5 476h363a38.5 38.5 0 0 0 38.5-38.5v-363A38.5 38.5 0 0 0 437.5 36h-363zm316.97 36.03A50 50 0 0 1 440 122a50 50 0 0 1-100 0 50 50 0 0 1 51.47-49.97zm-268 268A50 50 0 0 1 172 390a50 50 0 0 1-100 0 50 50 0 0 1 51.47-49.97z" fill="#fff" fill-opacity="1"></path></g></svg>
<svg class="face3" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path d="M0 0h512v512H0z" fill-opacity="0"></path><g class="" style="" transform="translate(0,0)"><path d="M74.5 36A38.5 38.5 0 0 0 36 74.5v363A38.5 38.5 0 0 0 74.5 476h363a38.5 38.5 0 0 0 38.5-38.5v-363A38.5 38.5 0 0 0 437.5 36h-363zm316.97 36.03A50 50 0 0 1 440 122a50 50 0 0 1-100 0 50 50 0 0 1 51.47-49.97zM256 206a50 50 0 0 1 0 100 50 50 0 0 1 0-100zM123.47 340.03A50 50 0 0 1 172 390a50 50 0 0 1-100 0 50 50 0 0 1 51.47-49.97z" fill="#fff" fill-opacity="1"></path></g></svg>
<svg class="face4" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path d="M0 0h512v512H0z" fill-opacity="0"></path><g class="" style="" transform="translate(0,0)"><path d="M74.5 36A38.5 38.5 0 0 0 36 74.5v363A38.5 38.5 0 0 0 74.5 476h363a38.5 38.5 0 0 0 38.5-38.5v-363A38.5 38.5 0 0 0 437.5 36h-363zm48.97 36.03A50 50 0 0 1 172 122a50 50 0 0 1-100 0 50 50 0 0 1 51.47-49.97zm268 0A50 50 0 0 1 440 122a50 50 0 0 1-100 0 50 50 0 0 1 51.47-49.97zm-268 268A50 50 0 0 1 172 390a50 50 0 0 1-100 0 50 50 0 0 1 51.47-49.97zm268 0A50 50 0 0 1 440 390a50 50 0 0 1-100 0 50 50 0 0 1 51.47-49.97z" fill="#fff" fill-opacity="1"></path></g></svg>
<svg class="face5" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path d="M0 0h512v512H0z" fill-opacity="0"></path><g class="" style="" transform="translate(0,0)"><path d="M74.5 36A38.5 38.5 0 0 0 36 74.5v363A38.5 38.5 0 0 0 74.5 476h363a38.5 38.5 0 0 0 38.5-38.5v-363A38.5 38.5 0 0 0 437.5 36h-363zm48.97 36.03A50 50 0 0 1 172 122a50 50 0 0 1-100 0 50 50 0 0 1 51.47-49.97zm268 0A50 50 0 0 1 440 122a50 50 0 0 1-100 0 50 50 0 0 1 51.47-49.97zM256 206a50 50 0 0 1 0 100 50 50 0 0 1 0-100zM123.47 340.03A50 50 0 0 1 172 390a50 50 0 0 1-100 0 50 50 0 0 1 51.47-49.97zm268 0A50 50 0 0 1 440 390a50 50 0 0 1-100 0 50 50 0 0 1 51.47-49.97z" fill="#fff" fill-opacity="1"></path></g></svg>
<svg class="face6" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path d="M0 0h512v512H0z" fill-opacity="0"></path><g class="" style="" transform="translate(0,0)"><path d="M74.5 36A38.5 38.5 0 0 0 36 74.5v363A38.5 38.5 0 0 0 74.5 476h363a38.5 38.5 0 0 0 38.5-38.5v-363A38.5 38.5 0 0 0 437.5 36h-363zm48.97 36.03A50 50 0 0 1 172 122a50 50 0 0 1-100 0 50 50 0 0 1 51.47-49.97zm268 0A50 50 0 0 1 440 122a50 50 0 0 1-100 0 50 50 0 0 1 51.47-49.97zM122 206a50 50 0 0 1 0 100 50 50 0 0 1 0-100zm268 0a50 50 0 0 1 0 100 50 50 0 0 1 0-100zM123.47 340.03A50 50 0 0 1 172 390a50 50 0 0 1-100 0 50 50 0 0 1 51.47-49.97zm268 0A50 50 0 0 1 440 390a50 50 0 0 1-100 0 50 50 0 0 1 51.47-49.97z" fill="#fff" fill-opacity="1"></path></g></svg>
<svg class="face-unknown" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path d="M0 0h512v512H0z" fill-opacity="0"></path><g class="" style="" transform="translate(0,0)"><path d="M255.76 44.764c-6.176 0-12.353 1.384-17.137 4.152L85.87 137.276c-9.57 5.536-9.57 14.29 0 19.826l152.753 88.36c9.57 5.536 24.703 5.536 34.272 0l152.753-88.36c9.57-5.535 9.57-14.29 0-19.825l-152.753-88.36c-4.785-2.77-10.96-4.153-17.135-4.153zm-.824 53.11c9.013.097 17.117 2.162 24.31 6.192 4.92 2.758 8.143 5.903 9.666 9.438 1.473 3.507 1.56 8.13.26 13.865l-1.6 5.706c-1.06 4.083-1.28 7.02-.66 8.81.57 1.764 1.983 3.278 4.242 4.544l3.39 1.898-33.235 18.62-3.693-2.067c-4.118-2.306-6.744-4.912-7.883-7.82-1.188-2.935-.99-7.603.594-14.005l1.524-5.748c.887-3.423.973-6.23.26-8.418-.653-2.224-2.134-3.983-4.444-5.277-3.515-1.97-7.726-2.676-12.63-2.123-4.956.526-10.072 2.268-15.35 5.225-4.972 2.785-9.487 6.272-13.55 10.46-4.112 4.162-7.64 8.924-10.587 14.288L171.9 138.21c5.318-5.34 10.543-10.01 15.676-14.013 5.134-4 10.554-7.6 16.262-10.8 14.976-8.39 28.903-13.38 41.78-14.967 3.208-.404 6.315-.59 9.32-.557zm50.757 56.7l26.815 15.024-33.235 18.62-26.816-15.023 33.236-18.62zM75.67 173.84c-5.753-.155-9.664 4.336-9.664 12.28v157.696c0 11.052 7.57 24.163 17.14 29.69l146.93 84.848c9.57 5.526 17.14 1.156 17.14-9.895V290.76c0-11.052-7.57-24.16-17.14-29.688l-146.93-84.847c-2.69-1.555-5.225-2.327-7.476-2.387zm360.773.002c-2.25.06-4.783.83-7.474 2.385l-146.935 84.847c-9.57 5.527-17.14 18.638-17.14 29.69v157.7c0 11.05 7.57 15.418 17.14 9.89L428.97 373.51c9.57-5.527 17.137-18.636 17.137-29.688v-157.7c0-7.942-3.91-12.432-9.664-12.278zm-321.545 63.752c6.553 1.366 12.538 3.038 17.954 5.013 5.415 1.976 10.643 4.417 15.68 7.325 13.213 7.63 23.286 16.324 30.218 26.082 6.932 9.7 10.398 20.046 10.398 31.04 0 5.64-1.055 10.094-3.168 13.364-2.112 3.212-5.714 5.91-10.804 8.094l-5.2 1.92c-3.682 1.442-6.093 2.928-7.23 4.46-1.137 1.472-1.705 3.502-1.705 6.092v3.885l-29.325-16.933v-4.23c0-4.72.892-8.376 2.68-10.97 1.787-2.652 5.552-5.14 11.292-7.467l5.2-2.006c3.087-1.21 5.334-2.732 6.742-4.567 1.46-1.803 2.192-4.028 2.192-6.676 0-4.027-1.3-7.915-3.9-11.66-2.6-3.804-6.227-7.05-10.885-9.74-4.387-2.532-9.126-4.29-14.217-5.272-5.09-1.04-10.398-1.254-15.922-.645v-27.11zm269.54 8.607c1.522 0 2.932.165 4.232.493 6.932 1.696 10.398 8.04 10.398 19.034 0 5.64-1.056 11.314-3.168 17.023-2.112 5.65-5.714 12.507-10.804 20.568l-5.2 7.924c-3.682 5.695-6.093 9.963-7.23 12.807-1.137 2.785-1.705 5.473-1.705 8.063v3.885l-29.325 16.932v-4.23c0-4.72.894-9.41 2.68-14.067 1.79-4.715 5.552-11.55 11.292-20.504l5.2-8.01c3.087-4.776 5.334-8.894 6.742-12.354 1.46-3.492 2.192-6.562 2.192-9.21 0-4.028-1.3-6.414-3.898-7.158-2.6-.8-6.23.142-10.887 2.83-4.387 2.533-9.124 6.25-14.215 11.145-5.09 4.84-10.398 10.752-15.922 17.74v-27.11c6.553-6.2 12.536-11.44 17.95-15.718 5.417-4.278 10.645-7.87 15.68-10.777 10.738-6.2 19.4-9.302 25.99-9.307zm-252.723 94.515l29.326 16.93v30.736l-29.325-16.93v-30.735zm239.246 8.06v30.735l-29.325 16.93v-30.733l29.326-16.932z" fill="#fff" fill-opacity="1"></path></g></svg>The Captain and Billy started shaking their cups, dice rattling.
Clack clack clack...The game, ye see, be played in turns. At the start o' the game, both o' us, the Captain and I, we each be havin' a cup wi' 5 regular six-sided dice. When a turn begins, we give our cups a good shake and then place 'em on the table, upside down. We then take a peek underneath to reveal our own dice. Mind ye, we can only see the faces o' our own dice, not the other's! Once the dice be revealed, a game round sets sail.
In each round, we take turns, makin' our bids and guessin' **how many dice show a particular face under both cups**. Let's say, for example, I be sayin', 'there be 5 fours!' Then, the other player be faced wi' two options:
- They can **bid higher**, meanin' they can either raise the number o' faces (like 6 or 7, or more, in me example), or raise the face value itself (like 5 fives or 5 sixes). But ye need to bear in mind a special rule: if a player chooses to raise the number o' faces, they can guess any face they like! In me example, it be allowed to bid 6 twos or 6 threes or any other face after me bid. The same doesn't apply if one chooses to raise the face value.
- The other option be **callin'**. Aye, and when ye call, ye be callin' the other player a LIAR! It means **ye don't believe that there be at least as many faces as yer opponent guessed under both cups**. This be the end o' the game round, and it determines the round winner! If the caller be right, they win the round, and their opponent loses 1 die. If the caller be wrong, well, then the roles be reversed. And so the game sails on until one o' the players be left wi' 2 dice (which means they have lost 3 times). That player be the loser, and the other be crowned the victor!
And there be one more twist to the game that I always like to use when I play: **The "ones" be wildcards!** Aye, they count as any face ye like! Now, ain't that a fine addition to the thrill?# Fixing the fusebox
<hr>
<div#desc></div>
<span#fuses-text></span><span#check-span> → <a0#check-button>Check configuration</a></span>
<a0#coverage-button>Show coverage</a>
<div.editor>[[Continue|Fusebox/Repaired]]</div>
<a0#continue-button style="margin-bottom: 1.5vh;">CONTINUE</a>
<div class="square-canvas-container">
<canvas id="fusebox"></canvas>
</div>
<a0#abandon-button>ABANDON</a>
<%
/*** GLOBALS START ***/
// global parameters
s.fusebox = s.FB_LVLS[s.FB_LVL];
const N = s.fusebox.N ?? 8;
const N_FUSES = s.fusebox.N_FUSES ?? N;
const SYMMETRY_MODE = s.fusebox.SYMMETRY_MODE ?? 0;
const BACK_TO = s.fusebox.BACK_TO ?? "Bridge";
let fuses = N_FUSES;
let grid = Array.from({ length: N }, () => Array(N).fill(false));
let showCoverage;
let showHalf = -1;
// canvas globals
/** @type {HTMLCanvasElement} */
let canvas;
/** @type {CanvasRenderingContext2D} */
let ctx;
let H, W, HINCR, WINCR;
// global DOM elements
let fusesText,
coverageButton,
checkSpan,
checkButton,
descDiv,
abandonButton,
continueButton;
/*** GLOBALS END ***/
/*** FUNCTIONS START ***/
function setupDOMElements() {
canvas = $("#fusebox").get(0);
fusesText = $("#fuses-text");
fusesText.html(
"Fuses left to place: <strong>" +
N_FUSES +
" / " +
N_FUSES +
"</strong>"
);
coverageButton = $("#coverage-button");
showCoverage = coverageButton.html().includes("Hide");
if (s.skills[0] < 1) coverageButton.hide();
checkSpan = $("#check-span");
checkButton = $("#check-button");
descDiv = $("#desc");
abandonButton = $("#abandon-button");
continueButton = $("#continue-button");
continueButton.hide();
}
function setupCanvas() {
H = canvas.height = canvas.clientHeight;
W = canvas.width = canvas.clientWidth;
HINCR = H / N;
WINCR = W / N;
ctx = canvas.getContext("2d");
ctx.fillStyle = "white";
ctx.strokeStyle = "white";
}
function drawLine(x0, y0, x1, y1) {
ctx.beginPath();
ctx.moveTo(x0, y0);
ctx.lineTo(x1, y1);
ctx.stroke();
}
function redrawGrid(skipLine = -1) {
ctx.clearRect(0, 0, W, H);
// step 1: draw the power lines
if (showCoverage) {
ctx.strokeStyle = "rgb(50,50,50)";
ctx.lineWidth = Math.ceil(HINCR * 0.1);
for (let i = 0; i < N; i++) {
for (let j = 0; j < N; j++) {
if (grid[i][j]) {
let w = i * WINCR + WINCR / 2;
let h = j * HINCR + HINCR / 2;
// horizontal
drawLine(0, h, W, h);
// vertical
drawLine(w, 0, w, H);
// diagonal RU
drawLine(w, h, w + h + WINCR, -HINCR);
// diagonal RD
drawLine(w, h, w + H - h + WINCR, H + HINCR);
// diagonal LD
drawLine(w, h, w - H + h - WINCR, H + HINCR);
// diagonal LU
drawLine(w, h, w - h - WINCR, -HINCR);
}
}
}
}
// step 2: draw the fuses
for (let i = 0; i < N; i++) {
for (let j = 0; j < N; j++) {
if (grid[i][j]) {
ctx.fillRect(
i * WINCR + 0.2 * WINCR,
j * HINCR + 0.2 * HINCR,
0.6 * WINCR,
0.6 * HINCR
);
ctx.clearRect(
i * WINCR + 0.4 * WINCR,
j * HINCR + 0.4 * HINCR,
0.2 * WINCR,
0.2 * HINCR
);
}
}
}
// step 2: draw the lines
ctx.strokeStyle = "white";
ctx.lineWidth = Math.ceil(HINCR * 0.01);
for (let i = 0; i < N; i++) {
// horizontal
if (2 * i !== skipLine)
drawLine(0, (i + 1) * HINCR, W, (i + 1) * HINCR);
// vertical
if (2 * i + 1 !== skipLine)
drawLine((i + 1) * WINCR, 0, (i + 1) * WINCR, H);
}
// step 3: check if a half must be wipped
if (showHalf > -1) {
let offset = showHalf * (H / 2);
ctx.clearRect(0, offset, W, offset + H / 2);
}
}
function onCanvasClick(e) {
const i = Math.clamp(Math.floor(e.offsetX / WINCR), 0, N - 1);
const j = Math.clamp(Math.floor(e.offsetY / HINCR), 0, N - 1);
if (!grid[i][j] && fuses > 0) {
fuses--;
grid[i][j] = true;
if (SYMMETRY_MODE > 0) {
fuses--;
grid[N - i - 1][N - j - 1] = true;
}
} else if (grid[i][j]) {
fuses++;
grid[i][j] = false;
if (SYMMETRY_MODE > 0) {
fuses++;
grid[N - i - 1][N - j - 1] = false;
}
} else return;
fusesText.html(`Fuses left to place: <strong>${fuses}/${N_FUSES}</strong>`);
redrawGrid();
if (fuses === 0) checkSpan.show();
else checkSpan.hide();
}
function checkCollisions() {
// check rows and columns for conflicts
for (let i = 0; i < N; i++) {
let rowSum = 0;
let colSum = 0;
for (let j = 0; j < N; j++) {
rowSum += grid[i][j]; // sum of values in the current row
colSum += grid[j][i]; // sum of values in the current column
}
if (rowSum > 1 || colSum > 1) {
return false; // conflict found
}
}
// check diagonals for conflicts
for (let i = 0; i < N; i++) {
for (let j = 0; j < N; j++) {
if (grid[i][j]) {
// check for conflicts in diagonals
for (let k = 1; k < N; k++) {
if (
(i + k < N && j + k < N && grid[i + k][j + k]) ||
(i - k >= 0 && j - k >= 0 && grid[i - k][j - k]) ||
(i + k < N && j - k >= 0 && grid[i + k][j - k]) ||
(i - k >= 0 && j + k < N && grid[i - k][j + k])
) {
return false; // conflict found
}
}
}
}
}
return true; // no conflict found
}
function checkCoverage() {
let covgrid = Array.from({ length: N }, () => Array(N).fill(false));
let fusesToCheck = N_FUSES;
for (let i = 0; i < N; i++) {
for (let j = 0; j < N; j++) {
if (!grid[i][j]) continue;
covgrid[i][j] = true;
for (let k = 0; k < N; k++) {
covgrid[k][j] = true; // horizontal
covgrid[i][k] = true; // vertical
}
// diagonals
for (let k = 0; i + k < N && j + k < N; k++)
covgrid[i + k][j + k] = true;
for (let k = 0; i + k < N && j - k >= 0; k++)
covgrid[i + k][j - k] = true;
for (let k = 0; i - k >= 0 && j + k < N; k++)
covgrid[i - k][j + k] = true;
for (let k = 0; i - k >= 0 && j - k >= 0; k++)
covgrid[i - k][j - k] = true;
if (--fusesToCheck === 0) break;
}
if (fusesToCheck === 0) break;
}
let uncovered = 0;
for (let i = 0; i < N; i++)
for (let j = 0; j < N; j++) uncovered += !covgrid[i][j];
return uncovered;
}
function checkSolution() {
canvas.removeEventListener("click", onCanvasClick);
descDiv.empty();
descDiv.append(
s.say(
"C",
window.either(
"Check this configuration, Crow.",
"How about this, Crow?",
"Maybe this will work, Crow. Check it."
)
)
);
const newDiv = document.createElement("div");
descDiv.append(newDiv);
window.scrollTo({ top: 0 });
s.think("Crow", "Evaluating provided configuration", $(newDiv)).then(() => {
let collisionCheckPassed = checkCollisions();
let uncoveredCells = checkCoverage();
if (collisionCheckPassed) {
descDiv.append(
s.say("Crow", "[**SUCCESS**] No fuse blocks another.")
);
} else {
descDiv.append(
s.say("Crow", "[**ERROR**] At least 2 fuses block each other.")
);
}
descDiv.append(
s.say(
"Crow",
`[**${
uncoveredCells > 0 ? "ERROR" : "SUCCESS"
}**] Number of uncovered cells: **${uncoveredCells}**.`
)
);
if (collisionCheckPassed && uncoveredCells === 0) {
// No errors, configuration is valid
canvas.removeEventListener("click", onCanvasClick);
descDiv.append(
s.say(
"Crow",
"Configuration approved. **Fusebox powered.** Excellent work, Captain."
)
);
s.FB_LVLS[s.FB_LVL].solved = true;
continueButton.show();
abandonButton.hide();
if (Object.values(s.FB_LVLS).every((x) => x.solved))
descDiv.append(s.unlockAch("fusebox"));
} else {
descDiv.append(s.say("Crow", "Configuration rejected."));
canvas.addEventListener("click", onCanvasClick);
}
});
}
/*** FUNCTIONS END ***/
/*** MAIN ***/
$(function () {
setupDOMElements();
setupCanvas();
redrawGrid();
canvas.addEventListener("click", onCanvasClick);
checkButton.on("click", function () {
checkSpan.hide();
checkSolution();
});
checkSpan.hide();
coverageButton.on("click", function () {
showCoverage = !showCoverage;
$(this).html((showCoverage ? "Hide" : "Show") + " coverage");
redrawGrid();
});
abandonButton.on("click", () => story.show(BACK_TO));
continueButton.on("click", () => story.show("Fusebox/Repaired"));
// line flickering effect
setInterval(function () {
if (Math.random() > 0.33) return;
redrawGrid(Math.floor(Math.random() * 2 * (N - 1)));
setTimeout(() => redrawGrid(), Math.random() * (400 - 100) + 100);
}, 1000);
// half grid flickering effect after first 3 seconds
if (SYMMETRY_MODE === 2) {
setTimeout(() => {
showHalf = 1;
redrawGrid();
setInterval(() => {
if (Math.random() > 0.1) return;
ctx.clearRect(0, 0, W, H);
setTimeout(() => {
showHalf = (Math.random() > 0.5) * 1;
redrawGrid();
}, 500);
}, 1000);
}, 3000);
}
});
%><div style="position: fixed; top: 40%; left: 50%; transform: translate(-50%, -40%);">
<span#year>1719</span>
</br>
<span#somewhere>Somewhere on the fringes of the </span><span#place>Caribbean Sea</span>
</div>
<div.editor>[[Chapter 1]]</div>
<%
$(function () {
const INIT_DELAY = 1000;
const DURATION = 2500;
const DELAY = 2500;
let year = $("#year");
let somewhere = $("#somewhere");
let place = $("#place");
year.css("opacity", 0);
somewhere.css("opacity", 0);
place.css("opacity", 0);
setTimeout(() => {
year.animate({ opacity: 1 }, DURATION);
setTimeout(() => {
place.animate({ opacity: 1 }, DURATION);
setTimeout(() => {
somewhere.animate({ opacity: 1 }, DURATION);
setTimeout(() => {
year.fadeOut(DURATION);
somewhere.fadeOut(DURATION);
place.fadeOut(DURATION);
setTimeout(
() => window.story.show("Chapter 1"),
DURATION + 1
);
}, DURATION + DELAY);
}, DURATION + DELAY);
}, DURATION + DELAY);
}, INIT_DELAY);
});
%><h1>Chapter 1</h1>
<h2><i><%= s.ACHS.C1.title %></i></h2>
<hr>
<%
s.CHAPTER = "1A";
s.TL = "PT";
s.setTLColor();
%>
<div#rest>
The Captain woke up violently by the repeated pounding on the door of his cabin.
<%= s.say("Ben", "Please, Captain! Please open the door. I wouldn't disturb you if it wasn't important!") %>
With a grunt, the Captain slowly rose from his bed and sat onto its edge. It took him a few moments to shake off the dizziness of his rude awakening.
He ignored the repeated knocking for now. Instead, [[he took a look around|Captain's Cabin]].
</div>
<%
$(function () {
$("h1").hide().fadeIn(2000);
$("h2").hide();
$("hr").hide();
$("#rest").hide();
setTimeout(() => {
$("h2").fadeIn(2000);
setTimeout(() => {
$("hr").fadeIn(s.GLOBALS.TEXT_FADEIN_MS);
$("#rest").fadeIn(s.GLOBALS.TEXT_FADEIN_MS);
}, 2000);
}, 2000);
});
%><div style="position: fixed; top: 40%; left: 50%; transform: translate(-50%, -40%);">
<span#year>1719 </span><span#year-system>BNE</span>
</br>
<span#somewhere>Somewhere on the outskirts of </span><span#place>M1 (The Crab Nebula)</span>
</div>
<div.editor>[[Chapter 2]]</div>
<%
$(function () {
const INIT_DELAY = 1000;
const DURATION = 2500;
const DELAY = 2500;
let year = $("#year");
let ysystem = $("#year-system");
let somewhere = $("#somewhere");
let place = $("#place");
year.css("opacity", 0);
ysystem.css("opacity", 0);
somewhere.css("opacity", 0);
place.css("opacity", 0);
setTimeout(() => {
year.animate({ opacity: 1 }, DURATION);
setTimeout(() => {
place.animate({ opacity: 1 }, DURATION);
setTimeout(() => {
somewhere.animate({ opacity: 1 }, DURATION);
setTimeout(() => {
ysystem.animate({ opacity: 1 }, DURATION);
setTimeout(() => {
year.fadeOut(DURATION);
somewhere.fadeOut(DURATION);
place.fadeOut(DURATION);
ysystem.fadeOut(DURATION);
setTimeout(
() => window.story.show("Chapter 2"),
DURATION + 1
);
}, DURATION + DELAY);
}, DURATION + DELAY);
}, DURATION + DELAY);
}, DURATION + DELAY);
}, INIT_DELAY);
});
%><h1>Chapter 2</h1>
<h2><i><%= s.ACHS.C2.title %></i></h2>
<hr>
<%
s.unlockAch("C1");
s.TL = "ST";
s.CHAPTER = "2A";
s.W_STANDS_FOR = "Watchdog";
s.TOOK_TABLET = false;
s.TOOK_NECKLACE = false;
s.setTLColor();
%>
<div#rest>
The Captain was jolted awake by a blaring alarm.
**WARNING**
**WARNING**
**IMPORTANT DAMAGE TO THE SHIP’S POWER GRID DETECTED**
**THE CAPTAIN IS KINDLY REQUESTED TO PROCEED TO THE COMMAND MODULE**
<%= s.say("C", "Yeah, yeah... Just... Give me a sec...") %>
**CAPTAIN AWAKE. DISABLING ALARM SYSTEM**
The alarm stopped. The room was once again in silence, save for a few flickering lights that disturbed the Captain’s effort to shake off the dizziness of her rude awakening. After a little while, she rose from her bed, sat onto its edge, and [[took a look around|Captain's Room]].
</div>
<%
$(function () {
$("h1").hide().fadeIn(2000);
$("h2").hide();
$("hr").hide();
$("#rest").hide();
setTimeout(() => {
$("h2").fadeIn(2000);
setTimeout(() => {
$("hr").fadeIn(s.GLOBALS.TEXT_FADEIN_MS);
$("#rest").fadeIn(s.GLOBALS.TEXT_FADEIN_MS);
}, 2000);
}, 2000);
});
%># AstroNav Planner
<hr>
<i>C.R.E.W. scan identification string: "<strong><%= s.astronav.desc %></strong>"</i>
<hr>
<div#desc></div>
<div#nav-div>
<div#nav-input>
Addition of navigation commands:
<p>
<a0.nav-cmd>U(P)</a>
<a0.nav-cmd>D(OWN)</a>
<a0.nav-cmd>L(EFT)</a>
<a0.nav-cmd>R(IGHT)</a>
<a0.nav-cmd>W(AIT)</a>
<a0#delete-cmd>DELETE LAST</a>
</p>
<p>
<a0#popup-show>Show keyboard shortcuts</a>
</p>
</div>
List of navigation commands:
<p>
<span#nav-list style="display: flex; flex-wrap: wrap;">
<span class="cmd-span" style="visibility: hidden;">X</span>
</span>
</p>
</div>
<p>
<a0#simulate style="visibility: hidden;">SIMULATE COURSE</a>
<a0#reset style="display: none;">RESET</a>
</p>
<p>
<div#time-div style="display: flex; align-items: center;">
Predicted locations at t =
<strong><span#time-text>0</span></strong>
<input#time type="range" min="0" max="5" value="0" style="flex-grow: 1;">
</div>
</p>
<a0#continue-button style="margin-bottom: 1.5vh;">CONTINUE</a>
<div class="square-canvas-container">
<canvas id="astronav-screen"></canvas>
</div></br>
<div.popup-overlay#shortcuts style="display: none;">
<div.popup>
<h2>Keyboard Shortcuts</h2>
<hr>
<p>Add directional command: <strong>Arrow / WASD</strong> keys</p>
<p>Add "WAIT" command: <strong>Space</strong> key</p>
<p>Remove last command: <strong>Backspace / Delete</strong> keys</p>
<p>Start course simulation: <strong>Enter</strong> key</p>
<a0.popup-close>Close</a>
</div>
</div>
<a0#abort-button>ABORT</a>
<div.editor>[[Computer]]</div>
<%
/*** GLOBALS START ***/
// global parameters
let N;
// canvas globals
let H, W, HINCR, WINCR;
// game logic globals
let simulation;
// global DOM elements
/** @type {JQuery<HTMLElement>} */
let descDiv;
/** @type {JQuery<HTMLElement>} */
let timeDiv;
/** @type {JQuery<HTMLElement>} */
let timeText;
/** @type {JQuery<HTMLElement>} */
let timeSlider;
/** @type {JQuery<HTMLElement>} */
let navInput;
/** @type {JQuery<HTMLElement>} */
let navList;
/** @type {JQuery<HTMLElement>} */
let simulate;
/** @type {JQuery<HTMLElement>} */
let reset;
/** @type {JQuery<HTMLElement>} */
let popup;
/** @type {JQuery<HTMLElement>} */
let abort;
/** @type {JQuery<HTMLElement>} */
let continueButton;
/*** GLOBALS END ***/
/*** CLASSES START ***/
class SpaceObject {
constructor(initPos, instlist = "", startsAt = 0) {
this.initPos = initPos;
this.instlist = instlist;
this.startsAt = startsAt;
this.setPath(instlist);
}
setPath(instlist) {
this.path = this.instructionsToPath(this.initPos, instlist);
this.period = this.path.length;
}
getPositionAt(t) {
return this.path[Math.max(0, t - this.startsAt) % this.period];
}
getDrawingEssentialsAt(t) {
let [x, y] = this.getPositionAt(t);
let [offx, offy] = [WINCR * x, HINCR * y];
return [x, y, offx, offy];
}
getRotationRads(dir) {
// ctx.rotate() expects clockwise rads
switch (dir) {
case "U":
return 0;
case "R":
return Math.PI / 2;
case "D":
return Math.PI;
case "L":
return (3 * Math.PI) / 2;
}
}
instructionsToPath(initPos, instlist) {
let path = new Array(1).fill(initPos);
for (let i = 0; i < instlist.length; i++) {
let [x, y] = path[path.length - 1];
switch (instlist[i]) {
case "U":
path.push([x, y - 1]);
break;
case "D":
path.push([x, y + 1]);
break;
case "L":
path.push([x - 1, y]);
break;
case "R":
path.push([x + 1, y]);
break;
case "W":
path.push([x, y]);
break;
}
}
if (path.length > 1) {
let [first, last] = [path[0], path[path.length - 1]];
if (first[0] === last[0] && first[1] === last[1]) path.pop();
}
return path;
}
}
class Ship extends SpaceObject {
constructor(initPos) {
super(initPos, "");
this.gravImpact = [0, 0];
}
// overloaded for grav impact
getPositionAt(t) {
let [x, y] = super.getPositionAt(t);
return [x + this.gravImpact[0], y + this.gravImpact[1]];
}
getDirectionAt(t) {
if (t === 0) return "U";
let [currx, curry] = this.getPositionAt(t);
let prevt = t - 1;
let [prevx, prevy] = this.getPositionAt(prevt);
while (prevx === currx && prevy === curry && prevt >= 0)
[prevx, prevy] = this.getPositionAt(prevt--);
if (prevt === -1) return "U";
if (curry === prevy + 1) return "D";
if (currx === prevx + 1) return "R";
if (currx === prevx - 1) return "L";
return "U";
}
updateGravImpact(newImpact) {
this.gravImpact[0] += newImpact[0];
this.gravImpact[1] += newImpact[1];
}
reset() {
this.setPath("");
this.gravImpact = [0, 0];
}
/**
* @param {CanvasRenderingContext2D} ctx
* @param {number} t
**/
drawAt(ctx, t) {
let [x, y, offx, offy] = this.getDrawingEssentialsAt(t);
if (x < 0 || y < 0 || x >= N || y >= N) return;
ctx.save();
// rotate
let facing = this.getDirectionAt(t);
ctx.translate(offx + WINCR / 2, offy + HINCR / 2);
ctx.rotate(this.getRotationRads(facing));
ctx.translate(-WINCR / 2, -HINCR / 2);
// draw triangle frame
ctx.beginPath();
ctx.moveTo(0.2 * WINCR, 0.8 * HINCR);
ctx.lineTo(0.8 * WINCR, 0.8 * HINCR);
ctx.lineTo(0.5 * WINCR, 0.2 * HINCR);
ctx.closePath();
ctx.fill();
ctx.translate(WINCR / 2, HINCR / 2);
// draw black center
ctx.beginPath();
ctx.arc(0, 0.075 * HINCR, 0.1 * WINCR, 0, 2 * Math.PI);
ctx.fillStyle = "black";
ctx.fill();
ctx.restore();
}
}
class Asteroid extends SpaceObject {
constructor(initPos, instlist = "", startsAt = 0) {
super(initPos, instlist, startsAt);
// create a random shape
let pts = window.either(5, 6, 7, 8);
let [minr, maxr] = [0.25 * WINCR, 0.45 * HINCR];
this.radii = Array.from(
{ length: pts },
() => Math.random() * (maxr - minr) + minr
);
// create a random rotation for the shape
this.rotation = Math.random() * 2 * Math.PI;
}
/**
* @param {CanvasRenderingContext2D} ctx
* @param {number} t
**/
drawAt(ctx, t) {
let [x, y, offx, offy] = this.getDrawingEssentialsAt(t);
if (x < 0 || y < 0 || x >= N || y >= N) return;
ctx.save();
ctx.translate(offx + WINCR / 2, offy + HINCR / 2);
ctx.moveTo(0, 0);
ctx.rotate(this.rotation);
ctx.beginPath();
for (let i = 0; i < this.radii.length; i++) {
let r = this.radii[i];
let d = (i / this.radii.length) * 2 * Math.PI;
let px = Math.cos(d) * r;
let py = Math.sin(d) * r;
ctx.lineTo(px, py);
}
ctx.closePath();
ctx.fill();
ctx.restore();
}
}
class GravField extends SpaceObject {
constructor(dims, dir, initPos, instlist = "", startsAt = 0) {
super(initPos, instlist, startsAt);
this.dims = dims;
this.dir = dir;
this.rotation = this.getRotationRads(dir);
}
directionToImpact() {
switch (this.dir) {
case "U":
return [0, -1];
case "D":
return [0, 1];
case "L":
return [-1, 0];
case "R":
return [1, 0];
}
}
/**
* @param {CanvasRenderingContext2D} ctx
* @param {number} t
**/
drawAt(ctx, t) {
let [x0, y0, _offx, _offy] = this.getDrawingEssentialsAt(t);
for (let x = x0; x < x0 + this.dims[0]; x++) {
if (x < 0 || x >= N) continue;
for (let y = y0; y < y0 + this.dims[1]; y++) {
if (y < 0 || y >= N) continue;
ctx.save();
ctx.translate(x * WINCR + WINCR / 2, y * HINCR + HINCR / 2);
ctx.rotate(this.rotation);
ctx.translate(-WINCR / 2, -HINCR / 2);
ctx.beginPath();
ctx.moveTo(0, HINCR);
ctx.lineTo(0, 0.5 * HINCR);
ctx.lineTo(0.5 * WINCR, 0);
ctx.lineTo(WINCR, 0.5 * HINCR);
ctx.lineTo(WINCR, HINCR);
ctx.lineTo(0.5 * WINCR, 0.5 * HINCR);
ctx.closePath();
ctx.fillStyle = "rgba(180,180,180,0.4)";
ctx.fill();
ctx.restore();
}
}
}
}
class Item extends SpaceObject {
constructor(pos, name) {
super(pos);
this.name = name;
this.collected = false;
}
collect() {
this.collected = true;
}
reset() {
this.collected = false;
}
/**
* @param {CanvasRenderingContext2D} ctx
* @param {number} t
**/
drawAt(ctx, t) {
if (this.collected) return;
const [x, y, offx, offy] = this.getDrawingEssentialsAt(t);
if (x < 0 || y < 0 || x >= N || y >= N) return;
const r = 0.4 * WINCR;
const cosp3 = Math.cos(Math.PI / 3);
const cosp6 = Math.cos(Math.PI / 6);
const sinp6 = Math.sin(Math.PI / 6);
const a = Math.sqrt(3) + 2;
ctx.save();
ctx.translate(offx + WINCR / 2, offy + HINCR / 2);
ctx.moveTo(0, 0);
ctx.beginPath();
ctx.arc(0, 0, r, 0, 2 * Math.PI);
ctx.fill();
ctx.beginPath();
ctx.moveTo(0, -r);
ctx.lineTo(cosp6 * r, sinp6 * r);
ctx.lineTo(-cosp6 * r, sinp6 * r);
ctx.closePath();
ctx.fillStyle = "black";
ctx.fill();
ctx.fillStyle = "white";
ctx.moveTo(0, 0);
ctx.fillRect(
-(3 / a) * r * cosp3,
-((4 - Math.sqrt(3)) / a) * r * cosp3,
(6 / a) * r * cosp3,
(6 / a) * r * cosp3
);
ctx.translate(0, ((Math.sqrt(3) - 1) / a) * r * cosp3);
ctx.beginPath();
ctx.arc(0, 0, (3 / a) * r * cosp3, 0, 2 * Math.PI);
ctx.fillStyle = "black";
ctx.fill();
ctx.restore();
}
}
class AstroNavManager {
constructor(canvasSelector) {
/** @type {HTMLCanvasElement} */
this.canvas = $(canvasSelector).get(0);
/** @type {CanvasRenderingContext2D} */
H = this.canvas.height = this.canvas.clientHeight;
W = this.canvas.width = this.canvas.clientWidth;
HINCR = H / N;
WINCR = W / N;
this.ctx = this.canvas.getContext("2d");
this.ctx.fillStyle = "white";
this.ctx.strokeStyle = "white";
this.asteroids = [];
this.gfs = [];
this.maxPeriod = 0;
}
initShip(initPos) {
this.ship = new Ship(initPos);
}
setShipPath(path) {
this.ship.setPath(path);
}
resetShip() {
this.ship.reset();
}
initItem(itemPos, itemName) {
this.item = new Item(itemPos, itemName);
}
resetItem() {
this.item?.reset();
}
addAsteroid(initPos, instlist = "", startsAt = 0) {
let newAsteroid = new Asteroid(initPos, instlist, startsAt);
let p = newAsteroid.period + newAsteroid.startsAt;
if (p > this.maxPeriod) this.maxPeriod = p;
this.asteroids.push(newAsteroid);
}
addGravField(dims, dir, initPos, instlist = "", startsAt = 0) {
let newGF = new GravField(dims, dir, initPos, instlist, startsAt);
let p = newGF.period + newGF.startsAt;
if (p > this.maxPeriod) this.maxPeriod = p;
this.gfs.push(newGF);
}
addSpaceObjectsFromJSON(data) {
this.initShip(data.ship);
if (data.item !== undefined)
this.initItem(data.item.pos, data.item.name);
if (data.asteroids !== undefined) {
for (const a of data.asteroids)
this.addAsteroid(a.initPos, a.instlist ?? "", a.startsAt ?? 0);
}
if (data.asteroidBlocks !== undefined) {
for (const block of data.asteroidBlocks) {
const [x, y] = block.from;
const [X, Y] = block.to;
for (let i = x; i <= X; i++)
for (let j = y; j <= Y; j++)
this.addAsteroid(
[i, j],
block.instlist ?? "",
block.startsAt ?? 0
);
}
}
if (data.asteroidRings !== undefined) {
for (const ring of data.asteroidRings) {
// IMPORTANT: assuming TL -> TR -> BR -> BL
const [[x1, y1], [x2, y2], [x3, y3], [x4, y4]] = ring.corners;
const ls = [x2 - x1, y3 - y2, x3 - x4, y4 - y1];
const skip = ring.skip ?? [];
let instlist = ["R", "D", "L", "U"]
.map((v, i) => v.repeat(ls[i]))
.join("");
let asteroids = [];
let instlists = [];
for (let x = x1; x < x2; x++) {
if (!arrayContainsArray(skip, [x, y1])) {
asteroids.push([x, y1]);
instlists.push(instlist);
}
instlist = instlist.slice(1) + "R";
}
for (let y = y2; y < y3; y++) {
if (!arrayContainsArray(skip, [x2, y])) {
asteroids.push([x2, y]);
instlists.push(instlist);
}
instlist = instlist.slice(1) + "D";
}
for (let x = x3; x > x4; x--) {
if (!arrayContainsArray(skip, [x, y3])) {
asteroids.push([x, y3]);
instlists.push(instlist);
}
instlist = instlist.slice(1) + "L";
}
for (let y = y4; y > y1; y--) {
if (!arrayContainsArray(skip, [x4, y])) {
asteroids.push([x4, y]);
instlists.push(instlist);
}
instlist = instlist.slice(1) + "U";
}
if (ring.dir === "L") instlists = instlists.map(otherWayAround);
for (let i = 0; i < asteroids.length; i++)
this.addAsteroid(asteroids[i], instlists[i]);
}
}
if (data.randomAsteroids !== undefined) {
for (const block of data.randomAsteroids) {
const [x, y] = block.from;
const [X, Y] = block.to;
for (let i = x; i <= X; i++)
for (let j = y; j <= Y; j++)
if (Math.random() > 0.5) this.addAsteroid([i, j]);
}
}
if (data.gfs !== undefined) {
for (const gf of data.gfs)
this.addGravField(
gf.dims,
gf.dir,
gf.initPos,
gf.instlist ?? "",
gf.startsAt ?? 0
);
}
}
updateGravImpactOnShipAt(t) {
if (t === 0) return;
const [sx, sy] = this.ship.getPositionAt(t);
for (const gf of this.gfs) {
const [gfxMin, gfyMin] = gf.getPositionAt(t);
const [gfxMax, gfyMax] = [gfxMin + gf.dims[0], gfyMin + gf.dims[1]];
const impact = gf.directionToImpact();
if (sx >= gfxMin && sx < gfxMax && sy >= gfyMin && sy < gfyMax)
this.ship.updateGravImpact(impact);
}
}
doesShipCollideAt(t) {
const [sx, sy] = this.ship.getPositionAt(t);
for (const asteroid of this.asteroids) {
const [ax, ay] = asteroid.getPositionAt(t);
if (sx === ax && sy === ay) return true;
}
return false;
}
isShipLostAt(t) {
const [sx, sy] = this.ship.getPositionAt(t);
if (sy < 0 && sx >= 0 && sx < N) return false;
return sx < 0 || sx >= N || sy < 0 || sy >= N;
}
shipReachesTopAt(t) {
let [_sx, sy] = this.ship.getPositionAt(t);
return sy <= 0;
}
isShipOnItemAt(t) {
if (this.item === undefined || this.item.collected) return false;
const [sx, sy] = this.ship.getPositionAt(t);
const [ix, iy] = this.item.getPositionAt(t);
return sx === ix && sy === iy;
}
collectItem() {
this.item.collect();
}
didShipCollectItem() {
return this.item !== undefined ? this.item.collected : true;
}
drawLine(x0, y0, x1, y1) {
this.ctx.beginPath();
this.ctx.moveTo(x0, y0);
this.ctx.lineTo(x1, y1);
this.ctx.stroke();
}
drawGridLines(skipLine = -1) {
// step 1: draw the lines
this.ctx.lineWidth = Math.ceil(HINCR * 0.01);
for (let i = 0; i < N; i++) {
// horizontal
if (2 * i !== skipLine)
this.drawLine(0, (i + 1) * HINCR, W, (i + 1) * HINCR);
// vertical
if (2 * i + 1 !== skipLine)
this.drawLine((i + 1) * WINCR, 0, (i + 1) * WINCR, H);
}
}
drawEmpty() {
this.ctx.clearRect(0, 0, W, H);
this.drawGridLines();
}
drawAllAt(t) {
this.ctx.clearRect(0, 0, W, H);
this.gfs.map((gf) => gf.drawAt(this.ctx, t));
this.asteroids.map((a) => a.drawAt(this.ctx, t));
this.item?.drawAt(this.ctx, t);
this.ship.drawAt(this.ctx, t);
this.drawGridLines();
}
}
/*** CLASSES END ***/
/*** FUNCTIONS START ***/
function setupDOMElements() {
descDiv = $("#desc");
timeDiv = $("#time-div");
timeText = $("#time-text");
timeSlider = $("#time");
navInput = $("#nav-input");
navList = $("#nav-list");
simulate = $("#simulate");
reset = $("#reset");
popup = $("#shortcuts");
abort = $("#abort-button");
if (s.CHAPTER === "6C") abort.hide();
continueButton = $("#continue-button");
continueButton.hide();
}
function addCommand(cmd) {
if (navList.children().first().html() === "X") navList.empty();
navList.append(`<span class="cmd-span">${cmd}</span>`);
simulate.css("visibility", "visible");
}
function removeLastCommand() {
navList.find(":last").remove();
if (navList.children().length === 0) {
navList.append(
'<span class="cmd-span" style="visibility: hidden;">X</span>'
);
simulate.css("visibility", "hidden");
}
}
function runSimulation(manager) {
simulate.hide();
navInput.hide();
reset.show();
descDiv.html(
s.say(
"C",
window.either(
"Maybe this path will get us out of here, Crow. Check it.",
"How about this one, Crow?",
"I plotted a course; run your simulation, Crow."
)
)
);
descDiv.append(
s.say("Crow", "Simulating plotted course, please stand by...")
);
let path = navList
.children()
.map((_i, x) => $(x).html())
.get()
.join("");
manager.setShipPath(path);
timeText.html(0);
timeSlider.hide();
navList.children().removeClass("toggled");
$(".nav-cmd,#delete-cmd").css("visibility", "hidden");
let t = 0;
simulation = setInterval(() => {
if (t === path.length + 1) {
clearInterval(simulation);
descDiv.append(
s.say(
"Crow",
"Ship did not make it to the other side of the scanned area. **Simulation failed; course rejected**. Reset and try something else, Captain."
)
);
return;
}
manager.updateGravImpactOnShipAt(t);
if (manager.isShipOnItemAt(t)) manager.collectItem();
manager.drawAllAt(t);
timeText.html(t);
if (t > 0) {
navList.children().removeClass("toggled");
navList
.children()
.eq(t - 1)
.addClass("toggled");
}
let lost = manager.isShipLostAt(t);
let crashed = manager.doesShipCollideAt(t);
if (lost || crashed) {
clearTimeout(simulation);
descDiv.append(
s.say(
"Crow",
(lost
? "Ship lost outside of scanned area."
: "Ship collided with an asteroid.") +
" **Simulation failed; course rejected**. Reset and try something else, Captain."
)
);
return;
} else if (manager.shipReachesTopAt(t)) {
clearTimeout(simulation);
if (!manager.didShipCollectItem()) {
descDiv.append(
s.say(
"Crow",
`Ship did not collect the item with designation "${manager.item.name}". ` +
"**Simulation failed; course rejected**. Reset and try something else, Captain."
)
);
} else {
reset.hide();
abort.hide();
continueButton.show();
descDiv.append(
s.say(
"Crow",
"**Simulation successful; course accepted**. Excellent work, Captain."
)
);
s.ASTRONAV_LVLS_COMPLETED[s.astronav.id - 1] = true;
if (s.ASTRONAV_LVLS_COMPLETED.every((x) => x))
descDiv.append(s.unlockAch("nav"));
descDiv.append(
s.say(
"Crow",
"Transfering the accepted course data to the autopilot module... Done. Whenever you are ready, Captain."
)
);
}
}
t++;
}, 500);
}
function arrayContainsArray(arr, elem) {
return arr.some((a) => elem.every((v, i) => v === a[i]));
}
function otherWayAround(path) {
const revdirs = {
R: "L",
L: "R",
U: "D",
D: "U",
};
return path
.split("")
.reverse()
.map((dir) => revdirs[dir])
.join("");
}
/*** FUNCTIONS END ***/
/*** MAIN ***/
$(function () {
let levelData = s.astronav;
N = levelData.N;
setupDOMElements();
let manager = new AstroNavManager("#astronav-screen");
manager.addSpaceObjectsFromJSON(levelData);
manager.drawAllAt(0);
if (manager.maxPeriod <= 1) timeSlider.hide();
else timeSlider.attr("max", manager.maxPeriod * 2);
timeSlider.on("input", function () {
let t = timeSlider.val();
manager.drawAllAt(t);
timeText.html(t);
});
$(".nav-cmd").on("click", function () {
addCommand($(this).html()[0]);
});
$("#delete-cmd").on("click", removeLastCommand);
simulate.on("click", () => runSimulation(manager));
abort.on("click", () => story.show("Computer"));
continueButton.on("click", () => story.show(levelData.next_psg));
reset.on("click", function () {
clearInterval(simulation);
reset.hide();
navInput.show();
simulate.show();
if (manager.maxPeriod > 1) {
timeSlider.show();
timeSlider.val(0);
}
timeText.html(0);
navList.children().removeClass("toggled");
$(".nav-cmd,#delete-cmd").css("visibility", "visible");
descDiv.empty();
manager.resetShip();
manager.resetItem();
manager.drawAllAt(0);
});
// support plotting the course with keyboard keys
$(document).on("keyup", function (e) {
if (navInput.is(":hidden")) return;
switch (e.key) {
case "ArrowUp":
case "w":
addCommand("U");
break;
case "ArrowDown":
case "s":
addCommand("D");
break;
case "ArrowRight":
case "d":
addCommand("R");
break;
case "ArrowLeft":
case "a":
addCommand("L");
break;
case " ":
addCommand("W");
break;
case "Delete":
case "Backspace":
removeLastCommand();
break;
case "Enter":
if (
simulate.is(":hidden") ||
simulate.css("visibility") === "hidden"
)
return;
runSimulation(manager);
break;
default:
// Ignore other keys
return;
}
});
$(document).on("keydown", function (e) {
if (navInput.is(":hidden")) return;
if (["ArrowUp", "ArrowDown", " "].includes(e.key)) e.preventDefault();
});
// popup displaying keyboard instructions
$("#popup-show").on("click", () => popup.show());
$(".popup-close, .popup-overlay").on("click", function (e) {
if ($(this).is(e.target)) popup.hide();
});
});
%>{
"level1": {
"desc": "Warming up",
"N": 7,
"ship": [3, 6],
"asteroids": [
{ "initPos": [4, 3] },
{ "initPos": [5, 5] },
{ "initPos": [2, 4] },
{ "initPos": [0, 0] },
{ "initPos": [5, 1] },
{ "initPos": [1, 0] },
{ "initPos": [5, 4] },
{ "initPos": [2, 2] },
{ "initPos": [6, 2] },
{ "initPos": [3, 5] },
{ "initPos": [4, 1] },
{ "initPos": [1, 3] }
]
},
"level2": {
"desc": "Get out",
"N": 13,
"ship": [6, 12],
"asteroidBlocks": [
{ "from": [0, 0], "to": [4, 0] },
{ "from": [6, 0], "to": [12, 0] },
{ "from": [0, 2], "to": [2, 2] },
{ "from": [6, 2], "to": [8, 2] },
{ "from": [4, 4], "to": [10, 4] },
{ "from": [8, 6], "to": [10, 6] },
{ "from": [2, 8], "to": [4, 8] },
{ "from": [6, 8], "to": [12, 8] },
{ "from": [2, 10], "to": [8, 10] },
{ "from": [0, 12], "to": [5, 12] },
{ "from": [7, 12], "to": [12, 12] },
{ "from": [0, 0], "to": [0, 12] },
{ "from": [2, 4], "to": [2, 8] },
{ "from": [4, 0], "to": [4, 8] },
{ "from": [6, 0], "to": [6, 2] },
{ "from": [6, 6], "to": [6, 10] },
{ "from": [10, 2], "to": [10, 6] },
{ "from": [10, 10], "to": [10, 12] },
{ "from": [12, 0], "to": [12, 12] }
]
},
"level3": {
"desc": "Get out (if you can)",
"N": 19,
"ship": [9, 18],
"asteroidBlocks": [
{ "from": [0, 0], "to": [8, 0] },
{ "from": [10, 0], "to": [18, 0] },
{ "from": [4, 2], "to": [14, 2] },
{ "from": [2, 4], "to": [4, 4] },
{ "from": [6, 4], "to": [8, 4] },
{ "from": [14, 4], "to": [16, 4] },
{ "from": [0, 6], "to": [2, 6] },
{ "from": [4, 6], "to": [6, 6] },
{ "from": [8, 6], "to": [10, 6] },
{ "from": [16, 6], "to": [18, 6] },
{ "from": [2, 8], "to": [4, 8] },
{ "from": [10, 8], "to": [14, 8] },
{ "from": [4, 10], "to": [8, 10] },
{ "from": [10, 10], "to": [12, 10] },
{ "from": [2, 12], "to": [8, 12] },
{ "from": [12, 12], "to": [16, 12] },
{ "from": [2, 14], "to": [14, 14] },
{ "from": [0, 16], "to": [2, 16] },
{ "from": [4, 16], "to": [6, 16] },
{ "from": [0, 18], "to": [8, 18] },
{ "from": [10, 18], "to": [18, 18] },
{ "from": [0, 0], "to": [0, 18] },
{ "from": [2, 0], "to": [2, 2] },
{ "from": [2, 6], "to": [2, 8] },
{ "from": [2, 10], "to": [2, 12] },
{ "from": [4, 2], "to": [4, 6] },
{ "from": [4, 8], "to": [4, 10] },
{ "from": [4, 14], "to": [4, 16] },
{ "from": [6, 4], "to": [6, 8] },
{ "from": [8, 6], "to": [8, 12] },
{ "from": [8, 16], "to": [8, 18] },
{ "from": [10, 0], "to": [10, 2] },
{ "from": [10, 4], "to": [10, 8] },
{ "from": [10, 10], "to": [10, 16] },
{ "from": [12, 2], "to": [12, 6] },
{ "from": [12, 10], "to": [12, 12] },
{ "from": [12, 16], "to": [12, 18] },
{ "from": [14, 4], "to": [14, 10] },
{ "from": [14, 14], "to": [14, 16] },
{ "from": [16, 2], "to": [16, 4] },
{ "from": [16, 6], "to": [16, 12] },
{ "from": [16, 14], "to": [16, 18] },
{ "from": [18, 0], "to": [18, 18] }
]
},
"level4": {
"desc": "They fly now?",
"N": 7,
"ship": [3, 6],
"asteroids": [
{ "initPos": [-1, 2], "instlist": "RRRRRRR" },
{ "initPos": [-1, 2], "instlist": "RRRRRRR", "startsAt": 2 },
{ "initPos": [-1, 2], "instlist": "RRRRRRR", "startsAt": 4 },
{ "initPos": [-1, 2], "instlist": "RRRRRRR", "startsAt": 6 },
{ "initPos": [7, 1], "instlist": "LLLLLLL", "startsAt": 1 },
{ "initPos": [7, 1], "instlist": "LLLLLLL", "startsAt": 3 },
{ "initPos": [7, 1], "instlist": "LLLLLLL", "startsAt": 5 },
{ "initPos": [7, 1], "instlist": "LLLLLLL", "startsAt": 7 },
{ "initPos": [-1, 0], "instlist": "RRRRRRR" },
{ "initPos": [-1, 0], "instlist": "RRRRRRR", "startsAt": 2 },
{ "initPos": [-1, 0], "instlist": "RRRRRRR", "startsAt": 4 },
{ "initPos": [-1, 0], "instlist": "RRRRRRR", "startsAt": 6 }
]
},
"level5": {
"desc": "All aboard",
"N": 7,
"ship": [3, 6],
"asteroidBlocks": [{ "from": [1, 1], "to": [5, 4] }],
"asteroidRings": [
{
"corners": [
[0, 0],
[6, 0],
[6, 5],
[0, 5]
],
"dir": "R",
"skip": [[3, 0]]
}
]
},
"level6": {
"desc": "Double-slit experiment",
"N": 9,
"ship": [4, 8],
"asteroidBlocks": [
{ "from": [0, 6], "to": [1, 6] },
{ "from": [3, 6], "to": [8, 6] },
{ "from": [0, 2], "to": [5, 2] },
{ "from": [7, 2], "to": [8, 2] }
],
"gfs": [
{ "initPos": [0, 5], "dims": [9, 3], "dir": "R" },
{ "initPos": [0, 1], "dims": [9, 3], "dir": "L" }
]
},
"level7": {
"desc": "Die kaukasische Kreidekreise",
"N": 9,
"ship": [4, 8],
"asteroidBlocks": [
{ "from": [3, 0], "to": [3, 8] },
{ "from": [5, 0], "to": [5, 8] }
],
"randomAsteroids": [
{ "from": [0, 0], "to": [2, 8] },
{ "from": [6, 0], "to": [8, 8] }
],
"gfs": [
{ "initPos": [0, 5], "dims": [5, 3], "dir": "L" },
{ "initPos": [4, 1], "dims": [5, 3], "dir": "R" },
{
"initPos": [6, 5],
"dims": [6, 3],
"dir": "R",
"instlist": "LLLRRR"
},
{
"initPos": [-3, 1],
"dims": [6, 3],
"dir": "L",
"instlist": "RRRLLL"
}
]
},
"level8": {
"desc": "Breaking the waves",
"N": 9,
"ship": [4, 8],
"asteroidBlocks": [
{
"from": [0, -1],
"to": [8, -1],
"instlist": "DDDDDDDDD",
"startsAt": 1
},
{
"from": [0, -1],
"to": [8, -1],
"instlist": "DDDDDDDDD",
"startsAt": 3
},
{
"from": [0, -1],
"to": [8, -1],
"instlist": "DDDDDDDDD",
"startsAt": 5
},
{
"from": [0, -1],
"to": [8, -1],
"instlist": "DDDDDDDDD",
"startsAt": 7
},
{
"from": [0, -1],
"to": [8, -1],
"instlist": "DDDDDDDDD",
"startsAt": 9
}
]
},
"level9": {
"desc": "Wait for it",
"N": 9,
"ship": [4, 8],
"asteroidBlocks": [
{
"from": [0, -2],
"to": [8, -1],
"instlist": "DDDDDDDDD"
},
{
"from": [0, -2],
"to": [8, -1],
"instlist": "DDDDDDDDD",
"startsAt": 5
}
],
"gfs": [
{ "initPos": [0, 5], "dims": [9, 1], "dir": "U" },
{ "initPos": [0, 2], "dims": [9, 1], "dir": "U" }
]
},
"level10": {
"desc": "Black bishop",
"N": 8,
"ship": [4, 7],
"asteroidBlocks": [
{ "from": [0, 6], "to": [2, 6] },
{ "from": [4, 6], "to": [7, 6] },
{ "from": [0, 5], "to": [3, 5] },
{ "from": [5, 5], "to": [7, 5] },
{ "from": [0, 4], "to": [4, 4] },
{ "from": [6, 4], "to": [7, 4] },
{ "from": [0, 3], "to": [3, 3] },
{ "from": [5, 3], "to": [7, 3] },
{ "from": [0, 2], "to": [2, 2] },
{ "from": [4, 2], "to": [7, 2] },
{ "from": [0, 1], "to": [1, 1] },
{ "from": [3, 1], "to": [7, 1] }
],
"gfs": [
{ "initPos": [0, 1], "dims": [8, 3], "dir": "L" },
{ "initPos": [0, 4], "dims": [8, 3], "dir": "R" }
]
},
"level11": {
"desc": "Black knight",
"N": 8,
"ship": [0, 7],
"asteroidBlocks": [
{ "from": [0, 6], "to": [2, 6] },
{ "from": [4, 6], "to": [7, 6] },
{ "from": [0, 5], "to": [7, 5] },
{ "from": [0, 4], "to": [3, 4] },
{ "from": [5, 4], "to": [7, 4] },
{ "from": [0, 3], "to": [7, 3] },
{ "from": [0, 2], "to": [2, 2] },
{ "from": [4, 2], "to": [7, 2] },
{ "from": [0, 1], "to": [7, 1] }
],
"gfs": [
{ "initPos": [0, 1], "dims": [8, 3], "dir": "L" },
{ "initPos": [0, 4], "dims": [8, 3], "dir": "R" },
{ "initPos": [3, 0], "dims": [3, 8], "dir": "U" }
]
},
"level12": {
"desc": "Riding the wind",
"N": 11,
"ship": [5, 10],
"asteroidBlocks": [
{ "from": [0, 8], "to": [10, 8] },
{ "from": [0, 6], "to": [6, 6] },
{ "from": [8, 6], "to": [10, 6] },
{ "from": [0, 5], "to": [5, 5] },
{ "from": [7, 5], "to": [10, 5] },
{ "from": [1, 0], "to": [10, 0] },
{ "from": [1, 1], "to": [2, 1] },
{ "from": [2, 3], "to": [3, 3] }
],
"asteroids": [
{ "initPos": [0, 3] },
{ "initPos": [2, 2] },
{ "initPos": [4, 4] }
],
"randomAsteroids": [
{ "from": [0, 9], "to": [4, 10] },
{ "from": [0, 7], "to": [6, 7] },
{ "from": [8, 7], "to": [10, 7] },
{ "from": [6, 1], "to": [10, 4] }
],
"gfs": [
{
"initPos": [11, 0],
"dims": [1, 11],
"dir": "U",
"instlist": "LLLLLLLLLLL"
},
{
"initPos": [11, 0],
"dims": [1, 11],
"dir": "L",
"instlist": "LLLLLLLLLLL",
"startsAt": 3
},
{
"initPos": [11, 0],
"dims": [1, 11],
"dir": "D",
"instlist": "LLLLLLLLLLL",
"startsAt": 6
},
{
"initPos": [11, 0],
"dims": [1, 11],
"dir": "L",
"instlist": "LLLLLLLLLLL",
"startsAt": 9
}
]
},
"level13": {
"desc": "The beacon",
"N": 17,
"ship": [8, 16],
"item": { "pos": [8, 8], "name": "The beacon" },
"asteroidRings": [
{
"corners": [
[1, 1],
[15, 1],
[15, 15],
[1, 15]
],
"dir": "R",
"skip": [
[8, 1],
[15, 8],
[8, 15],
[1, 8]
]
},
{
"corners": [
[3, 3],
[13, 3],
[13, 13],
[3, 13]
],
"dir": "L",
"skip": [
[8, 3],
[13, 8],
[8, 13],
[3, 8]
]
},
{
"corners": [
[5, 5],
[11, 5],
[11, 11],
[5, 11]
],
"dir": "R",
"skip": [
[8, 5],
[11, 8],
[8, 11],
[5, 8]
]
},
{
"corners": [
[7, 7],
[9, 7],
[9, 9],
[7, 9]
],
"dir": "L",
"skip": [
[8, 7],
[9, 8],
[8, 9],
[7, 8]
]
}
],
"gfs": [
{ "initPos": [8, 0], "dims": [1, 9], "dir": "R" },
{ "initPos": [8, 8], "dims": [1, 9], "dir": "L" },
{ "initPos": [0, 8], "dims": [9, 1], "dir": "R" },
{ "initPos": [8, 8], "dims": [9, 1], "dir": "L" }
]
}
}
<div#intro></div>
[[OK|AstroNav]]
<%
$(function () {
if (s.astronav.id === 4)
renderToSelector("#intro", "AstroNav/Intros/Moving");
else if (s.astronav.id === 6)
renderToSelector("#intro", "AstroNav/Intros/GravFields");
else renderToSelector("#intro", "AstroNav/Intros/Basics");
});
%>
<div#d1>
<p>Hello.</p>
</div>
<div#d2>
<p>Welcome to the tale of <strong>The Ship</strong>.</p>
</div>
<div#d3>
<p>You are about to experience a story never told, yet lived by many, both after and before.</p>
Are you ready, though?
There are questions you must face before embarking on a journey such as this, a journey that could leave you stranded in a place either warm, or desolate.
So? Are you ready?
[["Let's find out, shall we?"|Question 1]]
</div>
<%
$(function () {
let d1 = $("#d1");
let d2 = $("#d2");
let d3 = $("#d3");
d1.css("opacity", 0);
d2.css("opacity", 0);
d3.css("opacity", 0);
d1.animate({ opacity: 1 }, 1000);
setTimeout(() => d2.animate({ opacity: 1 }, 1000), 1500);
setTimeout(() => d3.animate({ opacity: 1 }, 1000), 3000);
});
%><p#p1>Not much of a choice, was it?</p>
<p#p2>Let's try this again, shall we?</p>
Contemplate on the following.
In the face of great uncertainty or rapid change, how do you find inner peace?
<a0#texts>"I seek solace in timeless wisdom, finding guidance in the texts of pioneers."</a>
<a0#friends>"I draw strength from trusted companions, relying on the bonds forged through shared joys and challenges."</a>
<a0#inwards>"I reflect inwardly, navigating the depths of my thoughts to discover inner harmony."</a>
<a0#art>"I immerse myself in the world of art, where colors, shapes, and expressions offer solace and inspiration."</a>
<div.editor>
[[Question 2]]
</div>
<%
$(function () {
if (s.Q1 === undefined) $("#p2").hide();
else $("#p1").hide();
$("a").on("click", function () {
s.Q1 = $(this).attr("id");
story.show("Question 2");
});
});
%><%= s.Q1.charAt(0).toUpperCase() + s.Q1.slice(1) %>, it is. What an interesting choice, indeed.
One more question before the tale of **The Ship** unfolds for the first time.
You want to move on. To face a new challenge, or to just run away.
What is your vessel of choice?
<a0#car>"A car."</a>
<a0#plane>"A plane."</a>
<a0#bicycle>"A bicycle."</a>
<a0#feet>"My own two feet."</a>
<a0#ship>"A ship."</a>
<div.editor>
[[Questions End]]
</div>
<%
const actions = {
"car": "go on a road trip",
"plane": "fly",
"bicycle": "go on a bike ride",
"feet": "take a walk",
"ship": "sail"
}
$(function () {
$("a").on("click", function () {
s.Q2 = $(this).attr("id");
s.Q2_ACTION = actions[s.Q2];
story.show("Questions End");
});
});
%>In the face of great uncertainty or rapid change, you seek solace **<%= s.Q1 === "inwards" ? s.Q1 : "in " + s.Q1 %>**.
To move on, to face a new challenge, to run away, you would **<%= s.Q2_ACTION %>**.
Do these statements reflect your soul? Be warned that there is no turning back; this is the baggage that you will carry in the journey that follows.
[["On second thought..."|Question 1]]
[["I am ready. This is who I am. Show me the tale of The Ship."|PT Intro]]
# The Captain's Cabin
<hr>
The room didn't look like much. It was the typical Captain's cabin of any middle-sized ship in the Spanish Armada.
A [[large window]] adorned the aft, while the Captain's [[desk]] commanded the center of the room.
Positioned against one wall was the Captain's bed, while on the opposing side stood an old, dusty [[bookcase]].
Directly opposite the desk lay the door, leading outside
<% if (s.CHAPTER > "2" || s.ADDRESSED_CREW) { %>[[to the main deck|Main Deck]].
<% } else if (s.TOOK_BOOK && s.READ_BOOK) { %>[[to the main deck|C1/A/1]].
<% } else { %>[[to the main deck|must deal with book]].
<% } %>
<% if (s.PAINTING_GIVEN) { %>
The wall next to the door was once again entirely bare. But it didn't matter the Captain at all anymore.
<% } else if (s.PRINTER_USED) { %>
The wall next to the door was not bare anymore; someone had hung [[a strange painting|Eleanor/Painting]], unlike anything the Captain had seen before.
<% } else { %>
The wall next to the door remained entirely bare, a fact that saddened the Captain, just a bit.
<% } %>
The Captain approached the window, revealing a captivating view of the vast expanse of the open sea that the ship had left behind. Gazing at the horizon stretching before him, the Captain could not help but wander whether this unreasonable endeavor was nothing more than a product of madness or an insatiable longing to escape the monotony of his former existence.
<% s.OPT_LOCS[passage.name] = true %>
<% if (Object.keys(s.OPT_LOCS).length === 7) { %>
<%= s.unlockAch("opt_locs") %>
<% } %>
[[Back|Captain's Cabin]]
A large ebony desk sits at the center of the Captain's Quarters, looking heavier that the largest cannons of the ship, grounding the whole room in place.
Two wide columns of drawers, with four in each, supported the flat finished surface of the desk, acting as its sturdy legs. All eight drawers were locked, and the Captain had no curiosity regarding their contents - they, like the books in the bookcase, came with the ship.
The chair accompanying the desk lacked any exceptional characteristics; it was short and thin, with no headrest, and just some worn leather coatings along the arms and back.
The surface of the desk used to be cluttered with Spanish naval books and documents, but the Captain had disposed of all of them. <% if (s.TOOK_BOOK) { %>Now, it was clean and completely empty.<% } else { %>Now, the only thing that lied on the desk was [[the Book|take book]], perfectly aligned at the exact center of the surface of the desk.<% } %>
[[Back|Captain's Cabin]]
The bookcase was filled with dusty, old, and weathered volumes. Unfortunately, since it came with the ship, all the books were in Spanish, a language not entirely familiar to the Captain.
[[Back|Captain's Cabin]]
<% s.OPT_LOCS[passage.name] = true %>
<% if (Object.keys(s.OPT_LOCS).length === 7) { %>
<%= s.unlockAch("opt_locs") %>
<% } %>
The Captain took the Book and placed it in his satchel.
[[Back|desk]]
<%
s.TOOK_BOOK = true;
if (s.i.pt.every(o => o.name !== "The Book")) {
s.i.pt.push({
name: "The Book",
description: "The book that the Captain received from his late father and the spark that set his journey in motion.",
passage: "Book",
});
}
%>
<%
$(function () {
// remove editor-specific stuff
$(".editor").hide();
// add inventory button
let showInventory =
!window.passage.tags.includes("NO_INV") &&
(s.i.both.length > 0 ||
(s.TL === "PT" ? s.i.pt.length > 0 : s.i.st.length > 0));
if (showInventory) {
let invIconStr = story.render("Inventory/Icon");
let invIcon = $("<papari>").append($.parseHTML(invIconStr));
invIcon = invIcon.find(".menu-button-icon");
let invIconDiv = $("<div>", {
class: "menu-button-icon-container inventory-icon-container",
});
invIconDiv.append(invIcon);
invIconDiv.on("click", function () {
s.BEFORE_INV = window.passage.id;
story.show("Inventory");
});
$(".passage").append(invIconDiv);
}
// related to relationships button
let relsPopupOverlay = $("<div>", { class: "popup-overlay" });
let relsPopup = $("<div>", { class: "popup" });
relsPopup.append($("<h2>").html("Relationships"));
relsPopup.append(
$("<i>").html(
"A good Captain ALWAYS finds a way to improve their relationship with their crew, even if sometimes the choices that lay before them hint otherwise..."
)
);
relsPopup.append($("<hr>"));
Object.keys(s.rels).forEach((person) => {
let relLvl = s.rels[person];
let relLvlText =
relLvl[0] === -1 ? "estranged" : s.REL_LVL_NAMES[relLvl[0]];
let relMaxed = relLvl[0] === relLvl[1];
if (relMaxed) {
if (person === "Jack") {
relLvlText = s.SPARE_JACK ? "spared his life" : "deceased";
} else relLvlText = s.REL_LVL_NAMES[s.REL_LVL_NAMES.length - 1];
}
relsPopup.append(
s.NAME_TRANS[person] +
": <strong>" +
relLvlText +
(relMaxed ? " (MAX)" : "") +
"</strong></br></br>"
);
});
let relsPopupClose = $("<a>", { class: "popup-close" })
.attr("href", "javascript:void(0)")
.html("Close");
relsPopup.append(relsPopupClose);
relsPopupOverlay.append(relsPopup);
$(".passage").append(relsPopupOverlay);
// add relationships button
let showRelationships =
!window.passage.tags.includes("NO_INV") &&
s.TL === "PT" &&
s.CHAPTER >= "1B";
if (showRelationships) {
let relsIconStr = story.render("Rels/Icon");
let relsIcon = $("<papari>").append($.parseHTML(relsIconStr));
relsIcon = relsIcon.find(".menu-button-icon");
let relsIconDiv = $("<div>", {
class: "menu-button-icon-container timeline-icon-container",
});
relsIconDiv.append(relsIcon);
relsIconDiv.on("click", function () {
relsPopupOverlay.show();
});
$(".popup-close, .popup-overlay").on("click", function (e) {
if ($(this).is(e.target)) relsPopupOverlay.hide();
});
$(".passage").append(relsIconDiv);
}
// related to skills button
let skillsPopupOverlay = $("<div>", { class: "popup-overlay" });
let skillsPopup = $("<div>", { class: "popup" });
skillsPopup.append($("<h2>").html("Skills"));
skillsPopup.append($("<hr>"));
skillsPopup.append(
`<p>Electronics: <strong>${s.skillLvl2Txt(s.skills[0])}</strong></p>`
);
skillsPopup.append(
`<p>Navigation: <strong>${s.skillLvl2Txt(s.skills[1])}</strong></p>`
);
let skillsPopupClose = $("<a>", { class: "popup-close" })
.attr("href", "javascript:void(0)")
.html("Close");
skillsPopup.append(skillsPopupClose);
skillsPopupOverlay.append(skillsPopup);
$(".passage").append(skillsPopupOverlay);
// add skills button
let showSkills =
!window.passage.tags.includes("NO_INV") &&
s.TL === "ST" &&
s.CHAPTER >= "2B";
if (showSkills) {
let skillsIconStr = story.render("Skills/Icon");
let skillsIcon = $("<papari>").append($.parseHTML(skillsIconStr));
skillsIcon = skillsIcon.find(".menu-button-icon");
let skillsIconDiv = $("<div>", {
class: "menu-button-icon-container timeline-icon-container",
});
skillsIconDiv.append(skillsIcon);
skillsIconDiv.on("click", function () {
skillsPopupOverlay.show();
});
$(".popup-close, .popup-overlay").on("click", function (e) {
if ($(this).is(e.target)) skillsPopupOverlay.hide();
});
$(".passage").append(skillsIconDiv);
}
// related to achievements button
let achsPopupOverlay = $("<div>", { class: "popup-overlay" });
let achsPopup = $("<div>", { class: "popup long-popup" });
let n_unlocked_achs = Object.values(s.ACHS).filter(
(x) => x.unlocked
).length;
let n_achs = Object.keys(s.ACHS).length;
achsPopup.append(
$("<h2>").html(`Achievements (${n_unlocked_achs}/${n_achs})`)
);
achsPopup.append(
$("<i>").html(
`By unlocking all ${n_achs} achievements, the Epilogue will become accessible...`
)
);
achsPopup.append($("<hr>"));
// deal with the chapter achievements first (always visible)
let chapter_achnames = Object.keys(s.ACHS)
.filter((y) => y >= "C1" && y <= "C7")
.sort();
chapter_achnames.forEach((achname) => {
let ach = s.ACHS[achname];
achsPopup.append(
`<strong style="opacity: ${ach.unlocked ? 1 : 0.4};">${
ach.unlocked ? ach.title : "(locked)"
}</strong><br><span style="opacity: ${ach.unlocked ? 1 : 0.4};">${
ach.desc
}</span><hr>`
);
});
// now with the rest
Object.keys(s.ACHS).forEach((achname) => {
if (chapter_achnames.includes(achname)) return;
let ach = s.ACHS[achname];
if (!ach.unlocked) return;
achsPopup.append(`<strong>${ach.title}</strong><br>${ach.desc}<hr>`);
});
let achsPopupClose = $("<a>", { class: "popup-close" })
.attr("href", "javascript:void(0)")
.html("Close");
achsPopup.append(achsPopupClose);
achsPopupOverlay.append(achsPopup);
$(".passage").append(achsPopupOverlay);
// add achievements button
let showAchs =
(!passage.tags.includes("NO_INV") && n_unlocked_achs > 0) ||
passage.tags.includes("STATS");
if (showAchs) {
let achsIconStr = story.render("Achievements/Icon");
let achsIcon = $("<papari>").append($.parseHTML(achsIconStr));
achsIcon = achsIcon.find(".menu-button-icon");
let achsIconDiv = $("<div>", {
class: "menu-button-icon-container achs-icon-container",
});
achsIconDiv.append(achsIcon);
achsIconDiv.on("click", function () {
achsPopupOverlay.show();
});
$(".popup-close, .popup-overlay").on("click", function (e) {
if ($(this).is(e.target)) achsPopupOverlay.hide();
});
$(".passage").append(achsIconDiv);
}
// related to the save button
let showSave =
!window.passage.tags.includes("NO_INV") ||
window.passage.name.trim() === "Save Info";
if (showSave) {
let saveIconStr = story.render("Save/Icon");
let saveIcon = $("<papari>").append($.parseHTML(saveIconStr));
saveIcon = saveIcon.find(".menu-button-icon");
let saveIconDiv = $("<div>", {
class: "menu-button-icon-container save-icon-container",
});
saveIconDiv.append(saveIcon);
saveIconDiv.on("click", function () {
if (window.passage.name.trim() === "Save Info") return;
// Get the current date and time
const now = new Date();
// Update playtime related stuff in state
s.PLAYTIME += now - s.SESSION_STARTED_AT;
s.SESSION_STARTED_AT = now;
// Create a blob with the """hash"""
const blob = new Blob([story.saveHash()], {
type: "text/plain",
});
// Create an anchor element to trigger the download
const a = document.createElement("a");
a.href = URL.createObjectURL(blob);
// Extract year, month, day, hour, and minute components
const year = now.getFullYear();
const month = String(now.getMonth() + 1).padStart(2, "0"); // Month is 0-based, so add 1
const day = String(now.getDate()).padStart(2, "0");
const hour = String(now.getHours()).padStart(2, "0");
const minutes = String(now.getMinutes()).padStart(2, "0");
const timeInfo = `${year}-${month}-${day}_${hour}-${minutes}`;
a.download = `the_ship_C${s.CHAPTER}_${timeInfo}.bookmark`; // Set the filename here
// Trigger a click event on the anchor to initiate the download
a.click();
// Clean up the URL object
URL.revokeObjectURL(a.href);
});
$(".passage").append(saveIconDiv);
}
// add swap button
let showSwap = !window.passage.tags.includes("NO_INV") && s.CHAPTER > "6";
if (showSwap) {
let swapIconStr = story.render("Swap/Icon");
let swapIcon = $("<papari>").append($.parseHTML(swapIconStr));
swapIcon = swapIcon.find(".menu-button-icon");
let swapIconDiv = $("<div>", {
class: "menu-button-icon-container swap-icon-container",
});
swapIconDiv.append(swapIcon);
swapIconDiv.on("click", function () {
let should_go_to = s.OTHER_CAPTAIN_AT ?? "Bridge";
s.OTHER_CAPTAIN_AT = passage.id;
s.TL = s.TL === "PT" ? "ST" : "PT";
s.setTLColor();
story.show(should_go_to);
});
$(".passage").append(swapIconDiv);
}
});
%>
<svg class="menu-button-icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path d="M0 0h512v512H0z" fill="#000" fill-opacity="1"></path><g class="" style="" transform="translate(0,0)"><path d="M230.125 18.156V247h49.313V18.156h-49.313zM78.812 21.438l-16 136.906c48.707 30.112 97.637 47.843 148.625 53.094V33.125c-44.244-1.822-88.46-5.89-132.625-11.688zm349.438.28c-43.398 6.814-86.784 10.647-130.125 11.97v175c46.732-7.458 95.816-24.375 148.438-50.844L428.25 21.72zm-1.938 166.532c-44.474 19.847-87.06 32.836-128.187 38.97V247h37.031v143.188h-37.031v8.718c0 34.41-20.516 56.084-43.25 56.28-22.734.2-43.438-21.34-43.438-56.28v-8.72l-27.656.002h-9.343V247h37.001v-17.188c-43.774-4.164-86.14-16.857-127.687-38.062 5.04 92.69 3.66 185.37-5.063 278.063 117.402 32.047 234.788 31.002 352.188 0-6.853-93.858-9.223-187.706-4.563-281.563zm-233.187 77.438V371.5H316.47V265.687H193.124zm20.47 18.156H296v67.5H213.594v-67.5zm18.686 18.687v30.126h45.032V302.53h-45.03zm-2.155 87.658v8.718c0 28.23 13.32 37.692 24.594 37.594 11.27-.098 24.718-10.018 24.718-37.594v-8.72l-49.313.002z" fill="#fff" fill-opacity="1"></path></g></svg># Inventory
<hr>
<% for (let i = 0; i < s.i.both.length; i++) { %>
<%= renderInventoryItem(s.i.both[i], true) %>
<hr>
<% } %>
<% let tli = s.TL === "PT" ? s.i.pt : s.i.st; %>
<% for (let i = 0; i < tli.length; i++) { %>
<%= renderInventoryItem(tli[i], false) %>
<hr>
<% } %>
<a0#close-inv>Close inventory</a>
<%
function renderInventoryItem(item, both) {
let name = both ? item.name[s.TL] : item.name;
let description = both ? item.description[s.TL] : item.description;
let text = "**" + name + "**<br/>*" + description + "*<br/>";
if (item.passage !== undefined) {
if (typeof item.passage === "string")
text += "<a0#" + item.passage + ">Examine</a>";
else if (
typeof item.passage === "object" &&
item.passage[s.TL] !== undefined
)
text += "<a0#" + item.passage[s.TL] + ">Examine</a>";
}
return text;
}
$(function () {
$("a").on("click", function () {
let aid = $(this).attr("id");
if (aid === "close-inv") story.show(s.BEFORE_INV);
else story.show("Inventory/" + aid);
});
});
%># The Book
<hr>
An old, grand and enigmatic tome, given to the Captain by Benjamin Bones a few months before their journey.
The Book bears a well-crafted black leather cover, showing its age, yet remarkably preserved. No words or markings adorn its front, back, or spine.
The tome comprises of a hundred completely blank pages, except for the first few.
The [[first page|Inventory/Book/Poem]] holds a hastily written poem in black ink, accompanied by strange symbols and numbers.
On the [[next pages|Inventory/Book/Journal 1]], the Captain has kept a sort of journal since he set sail.
[[Back|Inventory]]<p style="text-align: center;">
The dreamers died<br/>
The valorous fell<br/>
All of us succumbed<br/>
to the coming of Man<br/>
<br/>
A haven exists<br/>
We’ve been there before<br/>
And we’ll be there again<br/>
As we are now<br/>
<br/>
Seek it, lost soul<br/>
<br/>
We promise you this<br/>
Your goal will stand before you<br/>
Clear and plain as space<br/>
<br/>
You shall no longer be bound<br/>
to fail yourself<br/>
Reclaim your hopes from the dusty top shelf<br/>
What is lost, will be found<br/><br/>
</p>
There were 3 numbers written at the bottom of the page, followed by 3 question marks.
[[Back|Inventory/Book]]Gonna use these blank pages as a diary or journal, maybe. Strange stuff, never done this before, but the loneliness is killing me, despite being surrounded by a whole crowd. Ok, here it goes.
It's been about a week since we set sail, and I decided to use this book to keep me from going insane. Don't get me wrong, lads are fine, but I almost never feel like hanging around with them. Don't know why. Maybe because I can't look them straight in the eye when even I myself have no idea what we're actually doing.
It all started when I met Ben. He came to my house in Nassau about a year ago (no idea how he pinned me down) bearing the news of my father's passing, along with this book; some sort of heirloom destined for me. Said he knew my father, had been childhood friends or something. Also said he remembered me from when I was little. Asked him about stuff and facts seemed to check out, so I trust him.
My father was an important man in Nassau. From what I've heard (haven't spoken or met him since forever) he was quite close to Vane and Rackham, even heard he'd been a sort of consultor to Hornigold himself. Stuff about helping them set up this whole "pirate confederation" thing, before it all came tumbling down last year - just when Ben showed up at my doorstep.
Never been anything like a pirate myself; more like small thefts and trades here and there to make a living. But Ben is different. Ben is all about living (and possibly dying) at sea. Never had a vessel of his own, but always sneaked his way in whatever crew was in need for anything - from mopping the decks to cooking meals. Must be quite an upgrade for him, being the first mate and all that.
Speaking of which, my ship is actually his. Well, not exactly. He… "commandeered" a pretty fine galleon from the Spanish Armada (don't know and don't wanna know how) with an unpronounceable Spanish name. Never learned Spanish by the way, despite being born and raised in Nassau. But English, I liked it. Tried my best to read, speak and write better than the lot of them back home. Not that tough of a challenge, to be honest.
Well, enough for today. My mind goes back and forth between random thoughts at this point and it's getting tiring. I know that people talk to their diaries or journals or whatever, so goodnight I guess.
<div style="display: flex; justify-content: space-around;">
[[Back|Inventory/Book]]
[[Next entry|Inventory/Book/Journal 2]]
</div>And that is the end of week 2. I really have no idea where we are going or what we are doing. Can't imagine what the crew will think about all this. Don't really want to know. What will Ben think?
Speaking about what we are doing, could be a nice time killer writing that down. Well, it all began with Ben and my father's eerie gift from beyond the grave. There's this poem on the first page. Can't be sure who wrote it, but it speaks about a land or a place or something like that. And then, there are 3 numbers. And 3 question marks.
At first, I didn't think much of it. But Ben, well… Ben was obsessed. He was absolutely sure that it was a clue or some sort of a wordy treasure map and that we should get to the bottom of it. That it was some kind of last wish of my old man for me to find this place. Days passed and I finally succumbed to Ben's pressure (to his extremely childish delight). He left "to prepare" while I visited Hector O' Malley, an old friend and an exceptional astronomer. Showed him the numbers, said they definitely were coordinates pointing somewhere on the fringes of the Caribbean, but the area they was covering was vast and we could never dream of pinpointing the exact location without the 3 missing numbers - the 3 question marks, that is.
I was about to leave and confront Ben in order to call this thing off when Grace, Hector's daughter (now in her early 20s), hastingly approached me. She had heard my conversation with her father and she wanted to sail with us. Said she was loving the sky and the stars and stuff like that, been studying hard in her spare time and dreamt of navigating a ship across the high seas (and away from her father). Seemed strange to have a young girl aboard, let alone as our navigator, but her passion, I don't know… she convinced me. Asked Hector, said she wasn't any good around the house, couldn't get her off her books, and practically forced me to take her with me. So I did.
Turned out, Ben's "preparations" was the commandeering of our ship and the mustering of its crew. Took him less than 3 days. Can't really comprehend the skill set of this man. Didn't really explain anything to them, except for offering them decent salaries (which he said that he could cover and, once again, I believed him). And here we are, with Grace proving herself more than capable, leading us towards wherever these 3 numbers point.
<div style="display: flex; justify-content: space-around;">
[[Previous entry|Inventory/Book/Journal 1]]
[[Next entry|Inventory/Book/Journal 3]]
</div>It's been a whole month now, give or take a few days. I think we reached it. Now what?
All my life, I never truly belonged. Never had a family, a job, or something else that would make me a normal person. Hell, fuck normal persons, could not even be a half-decent pirate to earn my living! The sea was too much of a hassle for me. And here I am, counting 30 days on the high seas, 30 days away from home. And all these to follow the vanity of a crazy old person that one day showed up at my doorstep, claiming to be my father's pal and showing me the way to heaven or some shit. Am I going crazy? Was my life such a letdown? How else could I have signed up for this? How did I agree to not just play along, but also captain this ship towards nowhere? I should have been really desperate without realizing it, shouldn't I? Fuck all this, we are here now, wherever "here" is. Now what? Fuck it, I'll sleep on it. Maybe everything will seem clearer in the morning, I don't know.
<div style="display: flex; justify-content: space-around;">
[[Previous entry|Inventory/Book/Journal 2]]
[[Leave journal|Inventory/Book]]
</div>
<% s.READ_BOOK = true; %>
<% if (!s.TOOK_BOOK) { %>
The Captain felt like there was something he wouldn't like to leave behind before dealing with whatever Ben was up to.
<% } else { %>
The Captain felt like browsing the pages of the Book once more, before dealing with whatever Ben was up to.
<% } %>
[[Back|Captain's Cabin]]
The Captain reluctantly approached the door and opened it slowly. There stood Ben, sweaty and anxious, with his bald head shining red as a beet under the Carribean sun.
<%= s.say("C", "What’s going on, Ben? You woke me up, you know.") %>
<%= s.say("Ben", "Well, I... well... I’m really sorry, Capt’n. But as I said, I wouldn’t disturb you if it wasn’t important.") %>
<%= s.say("C", "Will you ever be done with these formalities? We are not exactly employer - employee, we’ve known each other since forever, seems like...") %>
The Captain felt mildly disturbed after uttering these last few words. Ben leaned towards the Captain in a secretive manner and started whispering.
<%= s.say("Ben", "It’s a show, my boy. Don’t want the crew be thinkin’ I’m anythin’ more special around here than any one of them.") %>
Ben stopped whispering and leaned back to his original position, speaking like a normal person again.
<%= s.say("Ben", "Speaking of which, well... Captain, I think you should address the crew. Like, formally. And, like, now.") %>
<a0#why-now.move-on>"Why now?"</a>
<a0#whats-up-with-them.move-on>"What's up with them?"</a>
<div.editor>[[C1/A/2]]</div>
<%
$(function () {
$(".move-on").on("click", function () {
let bid = $(this).attr("id");
if (bid === "why-now")
s.LINE = "Why the hurry? Just woke up, remember?";
else s.LINE = "Why? What's up with them?";
story.show("C1/A/2");
});
});
%># The Main Deck
<hr>
<% if (s.CHAPTER === "3E") { %>
<%= s.say("C", "I should probably go give the soup to the Prisoner before getting back to the upper deck.") %>
[[Back|Lower Deck]]
<% } else { %>
The main deck, where the ship's heartbeat resonates with the ceaseless footsteps of the crew under the blazing Caribbean sun. The galleon wasn't particularly large; the Captain reckoned he could cross the entire main deck from quarterdeck to forecastle in just ten steps or so. Despite her size, however, the ship seemed exceptionally sturdy. The state of the wooden planks and the overhead rigging suggested that her previous (and rightful) owners did her good.
A series of four [[cannons]] on each side decorated the deck, their barrels peeking through openings under sturdy black wooden [[railings]].
In the exact center of the deck, the hatch to the [[lower parts of the ship|Lower Deck]] was situated. Adjacent to it and toward the stern, the main mast rose to the sky. The ship's vital rigging stretched overhead from its whole length to the sides.
Next to the main mast, [[Billy]] was seated on a small barrel, with a larger barrel in front of him serving as a table, with two cups and some dice on top.
Toward the bow, at the front, a pair of short steps extended across the entire width of the deck, leading to the [[forecastle|Forecastle]] - the slightly raised foremost part of the ship’s upper deck.
At the stern, toward the back, two large and robust wooden staircases flanked the door to the [[Captain's cabin|Captain's Cabin]], leading to the [[quarterdeck|Quarterdeck]] - the ship’s highest deck, which also housed the helm. <% if (s.CHAPTER >= "3" && s.CHAPTER < "5D") { %>[[Jack Lockney|Jack]] was seated at the foot of the left staircase.<% } %>
<% } %>
<%= s.say("C", s.LINE) %>
<%= s.say("Ben", "Well, Capt’n. They be feelin’ like we are going nowhere, you know? And truth be told, I cannot blame them.") %>
<%= s.say("C", "Hold on. This whole operation was your idea, remember? You dragged me into this!") %>
<%= s.say("Ben", "I know, I know, don’t get all riled up. I’m just sayin’, we brought them onboard...") %>
<%= s.say("C", "You mean *you* brought them.") %>
<%= s.say("Ben", "Yes yes, *I* brought them onboard with the sweet smell of money and nothing more. It’s been a whole month now, and most folks feel like they’re entitled to knowing where we’re going and what all this is about.") %>
<%= s.say("C", "Entitled, I see. *Entitled*. That’s a fancy word.") %>
<%= s.say("Ben", "Pardon me, Capt’n. Just sayin’. You addressing them and sharing bits and pieces of the truth as you see fit might put some rough feelings at ease. Don’t need to have to deal with any, how should I say, *disturbances* while in the middle of nowhere on a piece of floatin’ wood.") %>
<a0#if-its-important.move-on>"If it's so important..."</a>
<a0#hate-it-but-ok.move-on>"Would rather go back to sleep, but OK I guess..."</a>
<a0#for-you.move-on>"Since *you* are asking..."</a>
<div.editor>[[C1/A/3]]</div>
<%
$(function () {
$(".move-on").on("click", function () {
let bid = $(this).attr("id");
if (bid === "if-its-important")
s.LINE =
"Well... OK. If you think it is *so* important for our wellbeing, so be it.";
else if (bid === "hate-it-but-ok")
s.LINE =
"I would rather be tied to the mainmast and have my liver eaten by an eagle, little by little. Or go back to sleep, at least. Anyway...";
else
s.LINE =
"Well... OK. But note that I am doing this only because it's *you* who's asking.";
story.show("C1/A/3");
});
});
%><%= s.say("C", s.LINE + " Gather them here. I'll speak from the quarterdeck.") %>
<%= s.say("Ben", "YES! Thank you, Capt'n! Oh, thank you! I'll have them gathered here in no time!") %>
Ben left in a hurry, shouting all around.
<%= s.say("Ben", "Attention, everyone! The Captain wishes to address the crew! Everyone on the upper deck in front of the Captain's quarters, and make it quick now!") %>
Ben went down the stairs to inform the rest of the crew. The Captain let out a weary sigh, before climbing the stairs to the quarterdeck. He stood there, leaning on the ship's rail, hands firmly gripping it, overlooking the upper deck below.
No more than 5 minutes later, everyone had gathered in front of the Captain's quarters, chattering and waiting.
<%= s.say("Ben", "Everyone, please be quiet now! Thank you! The stage is yours, Capt'n.") %>
<a0#kind.move-on>Kind</a>
<a0#annoyed.move-on>Annoyed</a>
<div.editor>[[C1/A/4]]</div>
<%
$(function () {
$(".move-on").on("click", function () {
s.CHOICE1 = $(this).attr("id");
story.show("C1/A/4");
});
});
%><% if (s.CHOICE1 === "kind") { %>
<%= s.say("C", "First of all, I know we haven’t been talking a lot and, even if I find it hard to admit, this addressing of sorts seems to have been long overdue. I want to thank all of you for coming along. I know it was a brave and tough decision, joining this crew without knowing where we are going or when y’all be going back home. Cannot really help you with the latter, but I’ll try and do my best easing your concerns regarding the former.") %>
<div.rel>
<i>Eleanor Ruby (cook) enjoys the Captain’s speech. <strong>Relationship improved</strong>.</i>
</div>
<div.rel>
<i>John Lockney (quartermaster) enjoys the Captain’s speech. <strong>Relationship improved</strong>.</i>
</div>
<% } else { %>
<%= s.say("C", "OK, so Ben, my first mate, woke me up a few moments ago, and seemed quite concerned. Seems some of you feel *entitled* to more details regarding our little trip. Don’t get me wrong, love fancy words myself, but *entitled*? I don’t know. Feels like Ben bought all of your entitlements at quite a good price, didn’t he?") %>
The crew started chattering again, louder and louder. Ben seemed even more anxious than before.
<div.rel>
<i>Grace O’ Malley (navigator) dislikes the Captain’s speech. <strong>Relationship deteriorated</strong>.</i>
</div>
<div.rel>
<i>Eleanor Ruby (cook) dislikes the Captain’s speech. <strong>Relationship deteriorated</strong>.</i>
</div>
<div.rel>
<i>John Lockney (quartermaster) dislikes the Captain’s speech. <strong>Relationship deteriorated</strong>.</i>
</div>
<%= s.say("Ben", "Quiet, everyone! The Captain is speaking!") %>
<%= s.say("C", "Anyway. Since I am feeling quite generous today and, truth be told, we haven’t properly met each other and -it pains me to admit it- it’s me who’s to blame, let’s say I owe you this. Allow me then to let you in on some info regarding our whereabouts and our goals.") %>
<div.rel>
<i>Eleanor Ruby (cook) appreciates the Captain’s honesty and intentions. <strong>Relationship improved</strong>.</i>
</div>
<% } %>
<a0#truth.move-on>Truth</a>
<a0#parts.move-on>Parts of the truth</a>
<a0#lies.move-on>Lies</a>
<div.editor>[[C1/A/5]]</div>
<%
$(function () {
$(".move-on").on("click", function () {
switch ($(this).attr("id")) {
case "truth":
s.LIED = 0;
break;
case "parts":
s.LIED = 1;
break;
case "lies":
s.LIED = 2;
break;
default:
s.LIED = 0;
break;
}
story.show("C1/A/5");
});
});
%><% if (s.LIED === 0) { %>
<%= s.say("C", "The hell with it, here is the whole truth. I met Ben, our first mate, about a year ago, shortly after Rogers and his boys stormed New Providence. He brought me this Book, a gift from my late father. Inside there are hints, let’s say, regarding a hidden place of some kind, maybe an island, that Ben and I believe holds booty that would make us all rich for life. Now, problem is, the clues are missing some important numbers regarding the *exact* location of said treasure trove. Today, we’ve reached the general area pointed by the Book, but we’ll need to work a little bit on the specifics with Ms. O’Malley. Rest assured, I’ll do everything I can to find this place in the next few days and I promise y’all that none shall return from this journey unsatisfied. That’d be all. Thank you.") %>
<div.rel>
<i>Grace O’Malley (navigator) appreciates that the Captain shared the truth with the rest of the crew. <strong>Relationship improved</strong>.</i>
</div>
<% } else if (s.LIED === 1) { %>
<%= s.say("C", "Well, here it goes. Truth is a treasure map came into my possession some time ago. Said map points to a hidden place of some kind, maybe an island, that Mr. Bones and I believe holds booty that would make us all rich for life. This treasure trove should be 3 days away now, 4 tops. So, I’m just asking y’all to be patient and focused on your tasks. I promise you, none shall return from this journey unsatisfied. That’d be all. Thank you.") %>
<div.rel>
<i>Grace O’Malley (navigator) doesn’t appreciate that the Captain deliberately withheld information from the crew. <strong>Relationship deteriorated</strong>.</i>
</div>
<% } else if (s.LIED === 2) { %>
<%= s.say("C", "Alright, listen up. I don't know about you, but I was sickened watching Rogers and his goons tear down everything we had built for years in Nassau. My own father paid for the establishment of the pirate's confederation with his very life!") %>
Ben seemed a little bit confused.
<%= s.say("C", "Now, all these lobsters are roaming *our* waters and farming *our* lands, all in the name of a King who's never even laid eyes on the Bahamas, let alone experienced the way we're forced to live under his ruthless law!") %>
Ben was definitely and utterly confused.
<%= s.say("C", "Enough, says I. It’s time someone took a stand and showed dear George what the Caribbean is *truly* like. What us buccaneers are *truly* made of. So, Mr. Bones and I intercepted a message from the British Navy. It said our very own Captain Woodes Rogers was summoned back to England to deliver his report regarding the reestablishment of British control in New Providence, in person, to the King. The same message stated that Rogers should bring riches and slaves back to England, as a thank-you to the King for his trust and to further assure him that the former pirate stronghold was now under his big, fat thumb.") %>
At this point, Ben wasn’t sure whether he was frightened or having a good time.
<%= s.say("C", "I think that all of you see where this is going now. A threefold goal lies before us in 3 days, 4 tops, when we are to intercept Captain Rogers’ ship: slay the bastard, free our brothers and sisters, and get rich! We are about to become the spark that’ll light the fuse, lads. Nassau and the Bahamas will become ours to roam free, once again!") %>
The crew started murmuring again, louder and louder. Neither the Captain nor Ben could make out what was being said among them, or grasp how they were feeling about what they’d just heard.
<%= s.say("C", "Alright. Thank you, everyone. That’d be all.") %>
<div.rel>
<i>Grace O’Malley (navigator) doesn’t appreciate that the Captain lied to the crew. <strong>Relationship deteriorated</strong>.</i>
</div>
<% } %>
<%= s.say("Ben", "Alright lads, show’s over. Hope you got what you wanted. Back to your posts! Y’all heard the Captain, not much more now, keep at it!") %>
The crowd dispersed even faster than it had gathered. The Captain climbed down the stairs from the quarterdeck and [[met Ben|C1/A/6]], in front of his private quarters’ door.<% if (s.LIED === 0) { %>
<%= s.say("C", "Well, no more secrets, I guess.") %>
<%= s.say("Ben", "Splendid, Captain! I’m sure that after this fine speech there’ll be no more complaints amongst my crewmates.") %>
<% } else if (s.LIED === 1) { %>
<%= s.say("C", "Well, I didn’t lie, exactly.") %>
<%= s.say("Ben", "It’s OK, Capt’n. You told them enough to keep things quiet, at least for a while. I’m quite sure Ms. O’Malley won't be pleased.") %>
<% } else if (s.LIED === 2) { %>
<%= s.say("C", "Did you enjoy the show, Ben? Felt like giving a performance to this highly entitled crowd of yours.") %>
<%= s.say("Ben", "Well, Capt’n, I... It was always your call, but... I don’t know. There may be some folks that you rallied now, and I’m sure Ms. O’Malley did not appreciate the dishonesty. But, I must admit, it was kinda fun. You? A king-hating *buccaneer*? That was somethin’ alright! Your father would be pissed knowin’ your distance from this life, but me? I’m afraid I enjoyed it, yes.") %>
<% } %>
<%= s.say("C", "So, what now?") %>
<%= s.say("Ben", "Well, *you* are the Capt’n, Capt’n! I’m sure you’ll figure it out. But I would suggest takin’ a stroll around the ship and talkin’ to some of the lads, if you feel like it. You know, to see what’s what. I’m sure many of them would highly appreciate it if their Captain showed interest in their personal situations, would be a great boost to morale. After that, I would visit Ms. O’Malley as soon as possible. We need to solve this riddle sooner than later, and find out where exactly we need to be headin’.") %>
<%= s.say("C", "Alright. Let me think things through a bit.") %>
<%= s.say("Ben", "Certainly, Capt’n! I’ll be around if you need me. Have a pleasant day!") %>
Ben left towards the foredeck. The Captain [[took a look around|Main Deck]].
<%
s.ADDRESSED_CREW = true
s.CHAPTER = "1B"
s.rels["Grace"] = [(s.LIED > 0 ? 1 : 2), 4];
s.rels["Eleanor"] = [(s.CHOICE1 === "kind" ? 2 : 1), 4];
%>
The Captain glanced at the series of cannons lining the main deck, with an uneasy expression forming on his face.
<% if (s.LIED < 2) { %>
<%= s.say("C", "Dear God, I hope there won't be any need to employ these. I highly doubt anyone among this crew can manage them. Let alone myself coordinating them. Hell, I'm not even sure any of us know where they stash them cannonballs on this ship. Well... let us pray.") %>
<% } else { %>
<%= s.say("C", "I can't even fathom how we'd handle an encounter with a real warship, as I told them. I'd really love to witness these lads Ben claimed I \"rallied\" attempting this. Hell, I'm not even sure any of us know where they stash them cannonballs. Well, let's hope I *did* lie to them.") %>
<% } %>
<% s.OPT_LOCS[passage.name] = true %>
<% if (Object.keys(s.OPT_LOCS).length === 7) { %>
<%= s.unlockAch("opt_locs") %>
<% } %>
[[Back|Main Deck]]
The Captain leaned against the railings, gazing out across the vast ocean. Nothing but water as far as the eye could see. The sun stood high, casting a gentle, pale hue over the ship and its crew, encouraging beads of sweat. Large fish nibbled at debris clinging to the ship's hull below. It was a beautiful day, a tranquil day. And that serene view was everything a restless mind needed to calm itself and grasp some fragments of inner peace.
<%= s.say("C", "Fuck. I miss home.") %>
<% s.OPT_LOCS[passage.name] = true %>
<% if (Object.keys(s.OPT_LOCS).length === 7) { %>
<%= s.unlockAch("opt_locs") %>
<% } %>
[[Back|Main Deck]]
<% if (s.CHAPTER < "3") { %>
The Captain couldn't think of anything of interest in the lower decks, at least for now.
[[Back|Main Deck]]
<% } else { %>
<h1>The Lower Deck</h1>
<hr>
The Captain stood at the bottom of the stairs leading to the [[main deck|Main Deck]], in the midst of a dimly lit narrow corridor. Directly across from the stairs stood the door to the [[crew's quarters|Crew's Quarters]].
Continuing down the corridor toward the bow, one would enter the ship's [[galley|Galley]].
Heading down the corridor in the opposite direction, toward the stern, they would encounter a musty staircase descending to the [[brig|Brig]].
<% } %>
<h1>The Forecastle</h1>
<hr>
A very small, slightly-elevated deck, at the front of the ship. The railings were slightly higher than those on the main deck, except for the middle where they were interrupted by a standard metallic bowsprit, with no kind of ornamentation. On the opposite side, two small steps lead to the ship's [[main deck|Main Deck]].
On one side of the forecastle, [[Ben]] had arranged a small table and an even smaller stool, serving as either his impromptu office or a personal bar table, depending on the mood. At the moment, he seemed to just sit there, taking in the view.
# The Quarterdeck
<hr>
The highest deck of the ship, the quarterdeck stood above the stern with a clear view of the entire ship ahead. In contrast to the rest of the upper decks, the quarterdeck had high solid railings with no gaps in between. There were a couple of wooden crates and barrels scattered around. Two large and robust wooden staircases flanked the helm leading down towards the [[main deck|Main Deck]].
At the forefront and center of the deck, the helm was situated. [[Grace O'Malley|Grace]] stood at the wheel, her gaze fixed on the distant horizon, lost in her thoughts.<%= s.say("Ben", "Well, hello there, Capt'n. How may I be of service?") %>
<%= story.render("Ben/Options") %><svg style="width: 60%; height: 100%; display: block; margin: auto; animation: logobg 30s linear infinite;" version="1.0" xmlns="http://www.w3.org/2000/svg"
width="1024.000000pt" height="1024.000000pt" viewBox="0 0 1024.000000 1024.000000"
preserveAspectRatio="xMidYMid meet">
<g transform="translate(0.000000,1024.000000) scale(0.100000,-0.100000)"
fill="#000000" stroke="none">
<path d="M0 8340 c0 -1513 3 -1900 13 -1900 9 0 9 -2 0 -8 -9 -5 -13 -32 -12
-80 1 -67 2 -71 20 -61 10 5 19 19 19 30 0 11 -3 18 -8 16 -11 -7 -9 67 3 75
5 4 16 1 25 -5 13 -11 13 -10 1 5 -11 15 -11 23 4 54 12 26 14 39 6 47 -6 6
-11 20 -11 32 1 18 2 18 13 4 8 -11 19 -14 32 -9 32 11 46 2 32 -21 -6 -10
-17 -19 -24 -19 -7 0 -13 -7 -13 -15 0 -8 5 -15 11 -15 6 0 9 -6 6 -12 -2 -7
-8 -24 -12 -37 l-7 -24 23 22 c20 18 53 32 36 14 -4 -3 3 -17 15 -30 17 -19
19 -26 9 -36 -10 -9 -11 -8 -6 6 9 21 -1 22 -22 2 -14 -14 -17 -14 -36 2 -11
10 -17 12 -13 5 4 -7 2 -19 -4 -27 -7 -8 -9 -15 -4 -15 5 0 3 -4 -4 -9 -10 -6
-10 -10 1 -19 12 -10 14 -8 12 13 -2 14 1 23 6 19 5 -3 9 -14 9 -24 0 -10 8
-24 18 -30 16 -11 16 -11 -2 -6 -15 5 -17 3 -10 -11 4 -10 7 -33 6 -51 -1 -20
2 -31 8 -27 6 3 10 -5 10 -19 0 -14 -6 -29 -14 -33 -12 -7 -11 -10 2 -23 14
-13 15 -12 9 3 -3 9 -2 17 2 17 10 0 21 -24 21 -46 0 -9 -4 -12 -10 -9 -9 6
-14 -8 -11 -27 0 -5 -6 -8 -14 -8 -9 0 -12 -6 -9 -15 4 -11 -1 -15 -17 -15
-17 0 -20 3 -11 12 14 14 -3 52 -19 42 -7 -4 -7 1 0 15 10 17 9 20 -4 15 -11
-5 -15 1 -15 26 0 24 3 30 13 24 7 -5 4 -1 -7 9 -17 16 -18 20 -5 28 7 5 9 9
3 9 -5 0 -16 -6 -23 -12 -9 -9 -8 -2 3 19 20 40 20 47 1 39 -8 -3 -20 1 -28 8
-11 12 -14 1 -16 -66 -1 -54 1 -78 8 -73 6 3 11 2 11 -4 0 -5 -4 -13 -10 -16
-7 -4 -10 -1032 -10 -3051 l0 -3044 5120 0 5120 0 0 5120 0 5120 -339 0 c-262
0 -340 -3 -344 -12 -4 -10 -6 -10 -6 -1 -1 10 -965 13 -4776 13 l-4775 0 0
-1900z m4310 1887 c0 -1 -9 -10 -19 -19 -18 -16 -20 -15 -18 3 1 11 9 19 19
19 10 0 18 -1 18 -3z m265 -17 c3 -6 -1 -7 -9 -4 -18 7 -21 14 -7 14 6 0 13
-4 16 -10z m-55 -55 c0 -12 -19 -12 -23 0 -4 9 -1 12 9 8 7 -3 14 -7 14 -8z
m-200 -47 c0 -4 -4 -8 -9 -8 -6 0 -12 4 -15 8 -3 5 1 9 9 9 8 0 15 -4 15 -9z
m37 -30 c-7 -4 -16 -8 -22 -8 -5 0 -3 5 5 10 10 6 11 10 3 10 -7 0 -13 5 -13
10 0 6 8 5 20 -2 14 -9 16 -14 7 -20z m-577 -13 c0 -8 -7 -15 -16 -15 -9 0
-14 -6 -11 -13 3 -8 -1 -14 -8 -14 -10 0 -11 6 -3 23 6 13 15 21 19 18 5 -3 9
0 9 5 0 6 2 11 5 11 3 0 5 -7 5 -15z m480 1 c0 -3 -4 -8 -10 -11 -5 -3 -10 -1
-10 4 0 6 5 11 10 11 6 0 10 -2 10 -4z m125 -5 c6 -11 -21 -41 -38 -41 -7 0
-6 4 3 10 13 9 13 11 0 21 -13 9 -12 10 3 5 9 -3 17 -1 17 4 0 13 7 13 15 1z
m4640 0 c3 -5 1 -12 -5 -16 -5 -3 -10 1 -10 9 0 18 6 21 15 7z m-4565 -52 c0
-5 -4 -9 -8 -9 -5 0 -9 7 -9 15 0 8 4 12 9 9 4 -3 8 -9 8 -15z m670 17 c0 -3
-4 -8 -10 -11 -5 -3 -10 -1 -10 4 0 6 5 11 10 11 6 0 10 -2 10 -4z m-1153 -45
c-8 -10 -8 -13 -1 -8 7 4 14 -2 18 -16 5 -18 8 -20 16 -7 5 8 10 11 10 5 0 -5
5 -2 11 8 8 13 7 23 -2 35 -8 9 -10 14 -5 10 5 -4 16 -3 26 2 13 7 22 4 36
-12 11 -12 13 -18 7 -14 -8 4 -13 1 -13 -8 0 -9 -3 -16 -7 -16 -5 0 -9 -12 -9
-28 -1 -27 -1 -27 12 6 14 32 29 46 17 15 -6 -16 -5 -16 17 0 34 23 41 21 30
-9 -14 -36 -14 -36 28 -13 20 12 29 14 20 6 -22 -18 -23 -31 -2 -23 8 3 13 2
10 -3 -3 -4 4 -17 15 -27 18 -16 19 -16 13 -1 -3 9 -2 17 4 17 5 0 12 -9 15
-20 3 -13 0 -20 -10 -20 -8 0 -11 -5 -8 -10 4 -7 13 -6 27 1 11 6 23 7 27 3
11 -16 52 -35 61 -29 9 5 15 -15 11 -37 0 -5 11 -8 25 -8 20 0 25 4 20 16 -5
14 -4 15 8 5 11 -9 15 -9 18 0 2 7 10 9 17 5 9 -6 10 -11 2 -19 -6 -6 -11 -17
-11 -24 0 -9 8 -5 23 9 16 16 22 31 19 51 -4 25 -2 28 15 23 12 -4 25 -1 32 7
9 12 7 14 -11 12 -13 -1 -15 0 -5 2 9 2 17 8 17 13 0 9 26 7 36 -3 4 -4 1 -7
-7 -7 -11 0 -11 -2 1 -10 13 -8 12 -10 -3 -10 -15 0 -16 -2 -5 -14 9 -10 20
-11 37 -5 16 7 28 5 39 -3 13 -11 14 -10 8 10 -5 14 -3 22 4 22 6 0 9 -4 5 -9
-3 -5 -1 -12 5 -16 6 -4 7 -12 4 -18 -4 -7 -3 -9 1 -4 14 12 17 50 4 57 -6 4
4 10 22 14 23 4 35 2 41 -7 4 -8 19 -13 33 -12 14 2 23 -1 19 -6 -3 -5 -10 -7
-15 -4 -5 4 -17 1 -26 -5 -14 -8 -8 -9 27 -7 36 3 45 8 45 23 0 13 -7 19 -23
18 -23 -1 -27 4 -14 21 13 18 34 16 39 -5 3 -11 9 -20 13 -20 5 0 6 -10 3 -21
-5 -19 -4 -20 16 -10 23 13 27 27 9 33 -7 3 -3 7 9 10 18 5 21 2 17 -17 -3
-19 0 -22 16 -18 11 3 20 10 20 15 0 5 -5 6 -12 2 -7 -4 -8 -3 -4 4 4 7 17 12
29 12 13 0 17 3 11 8 -19 12 -24 52 -7 52 9 0 13 -6 10 -15 -5 -11 -1 -12 17
-5 13 5 33 6 45 3 15 -4 21 -1 21 11 0 9 -6 16 -14 16 -8 0 -18 5 -22 11 -4 8
1 9 17 4 13 -4 26 -12 27 -16 6 -15 22 -10 22 7 0 14 2 15 17 3 15 -13 15 -12
5 8 -16 29 -15 42 2 21 7 -10 24 -19 36 -21 13 -2 26 -10 28 -17 4 -10 6 -9
13 1 5 9 11 10 16 4 5 -6 7 -9 5 -8 -9 4 -45 -37 -39 -44 4 -3 7 -1 7 5 0 6 7
9 17 5 11 -5 14 -3 8 6 -5 10 -2 11 14 6 17 -5 21 -2 22 17 1 13 1 27 0 32 -3
15 22 26 36 15 7 -6 17 -8 23 -4 6 4 9 2 8 -4 -2 -5 6 -17 17 -26 17 -14 17
-16 3 -11 -10 3 -18 2 -18 -3 0 -4 -7 -8 -15 -8 -11 0 -12 4 -4 13 7 9 6 12
-7 10 -23 -4 -29 -23 -14 -41 9 -11 16 -12 25 -5 6 5 31 17 54 25 37 13 42 13
38 0 -4 -10 -1 -12 10 -8 12 5 15 2 10 -9 -4 -12 -1 -14 14 -11 15 4 18 2 12
-13 -6 -17 -5 -18 11 -5 15 13 19 13 28 0 7 -11 11 -11 15 -1 8 21 23 13 23
-12 0 -13 8 -30 18 -37 15 -12 15 -12 5 1 -9 12 -7 15 13 15 13 0 25 -3 25 -7
1 -5 2 -13 3 -20 1 -14 26 -24 26 -10 0 8 28 9 38 2 1 -2 6 -3 11 -4 5 0 13
-5 18 -10 4 -5 3 -6 -4 -2 -6 3 -14 2 -18 -4 -6 -10 62 -12 80 -1 6 3 15 6 21
7 6 1 23 14 38 28 16 17 31 24 39 19 21 -13 35 -12 41 3 4 11 19 14 53 12 36
-2 47 0 45 10 -2 10 6 9 27 -4 24 -14 28 -21 19 -32 -9 -10 -8 -16 3 -23 11
-7 12 -11 1 -18 -11 -7 -11 -9 2 -14 18 -7 43 28 26 36 -6 3 -5 4 1 3 7 -1 13
-13 13 -27 1 -13 11 -34 24 -47 26 -26 32 -27 32 -8 0 8 9 18 20 21 11 3 20
13 20 21 0 16 16 19 25 4 8 -13 35 -1 29 13 -5 15 40 14 76 -1 19 -8 28 -7 36
4 14 18 20 18 27 0 4 -10 1 -13 -9 -9 -10 4 -12 0 -8 -11 8 -20 -3 -20 -38 -2
-24 13 -28 13 -28 0 0 -8 9 -14 21 -14 11 0 18 -4 14 -9 -3 -6 12 -9 35 -8 22
1 40 5 40 9 0 5 7 8 15 8 8 0 15 -5 15 -11 0 -5 5 -7 10 -4 6 3 16 3 23 -2 19
-12 39 -13 35 -1 -2 5 -7 8 -11 6 -5 -2 -13 5 -18 14 -6 10 -16 15 -27 12 -13
-4 -14 -3 -4 4 7 5 24 7 38 4 18 -3 26 1 32 19 6 16 11 19 17 9 5 -8 2 -16 -9
-22 -13 -7 -14 -13 -6 -23 7 -8 9 -23 5 -34 -3 -11 0 -23 6 -27 9 -5 10 -2 6
10 -5 14 -3 17 8 12 8 -3 15 0 15 6 0 6 3 8 6 5 4 -4 2 -13 -4 -20 -9 -10 -8
-18 3 -33 13 -16 14 -16 9 -1 -3 9 -1 17 5 17 6 0 8 6 5 14 -3 8 5 21 18 30
21 15 24 15 35 1 7 -11 13 -13 18 -5 9 15 25 2 25 -21 0 -10 5 -19 10 -19 6 0
10 -12 11 -27 0 -16 3 -22 6 -15 7 17 23 15 23 -3 0 -19 14 -19 34 1 15 14 16
14 16 -1 0 -9 4 -14 10 -10 5 3 7 12 4 20 -4 10 0 12 17 8 14 -4 20 -2 15 5
-3 6 -1 14 5 18 8 4 9 3 5 -4 -4 -7 -3 -12 2 -12 5 0 14 -10 20 -22 10 -21 11
-21 9 -3 -1 15 5 21 26 23 28 3 36 17 15 24 -9 3 -9 6 0 12 7 4 14 -3 18 -19
8 -31 52 -35 73 -6 12 17 16 17 29 5 11 -12 12 -17 1 -30 -12 -14 -10 -15 21
-2 35 15 35 15 37 -11 0 -14 6 -27 12 -29 6 -2 17 -9 24 -16 7 -7 19 -15 27
-19 12 -4 12 -6 -2 -6 -9 -1 -23 5 -31 13 -21 22 -67 25 -67 5 0 -5 4 -7 10
-4 5 3 7 0 4 -8 -3 -8 3 -20 12 -28 15 -12 16 -11 11 11 -4 14 -4 20 -1 13 3
-7 13 -9 22 -6 13 4 14 3 3 -5 -16 -12 3 -27 21 -16 7 4 8 3 4 -4 -4 -7 -1
-12 8 -12 9 0 16 5 16 10 0 17 18 11 46 -15 15 -14 23 -25 19 -25 -4 0 4 -9
18 -20 23 -18 45 -71 38 -94 -1 -5 6 -5 16 -1 33 12 36 10 37 -20 1 -26 5 -30
29 -29 20 1 25 -2 17 -11 -7 -8 -3 -15 16 -23 14 -7 23 -16 19 -21 -3 -5 1
-15 8 -23 28 -29 7 -77 -33 -72 -18 2 -30 -2 -34 -12 -3 -8 -10 -13 -15 -9 -5
3 -13 0 -17 -6 -4 -8 -3 -9 4 -5 7 4 12 1 12 -7 0 -15 54 -18 77 -4 8 5 10 -5
8 -33 -2 -22 1 -40 6 -40 6 0 7 5 4 10 -4 6 5 10 22 9 17 -1 21 -3 11 -6 -10
-2 -18 -13 -18 -23 0 -10 -4 -22 -10 -25 -6 -4 -7 1 -3 11 5 13 3 15 -7 9 -8
-5 -23 -9 -34 -10 -12 -1 -32 -5 -45 -9 -20 -7 -23 -5 -18 8 4 9 2 16 -3 16
-6 0 -10 -9 -10 -20 0 -11 -3 -19 -7 -19 -19 3 -27 -2 -14 -10 9 -6 10 -11 2
-15 -6 -4 -11 -3 -11 2 0 13 -41 2 -58 -15 -11 -11 -11 -14 2 -19 16 -6 12
-24 -5 -24 -6 0 -7 5 -4 10 10 16 -11 12 -25 -5 -11 -13 -10 -14 4 -9 11 4 16
1 16 -10 0 -9 -5 -16 -12 -16 -6 0 -8 -3 -5 -7 4 -4 -7 -13 -25 -21 -25 -11
-29 -16 -16 -19 10 -3 21 -15 24 -29 6 -24 18 -31 27 -16 2 4 2 1 1 -5 -2 -7
1 -13 7 -13 6 0 8 -9 4 -20 -6 -18 3 -25 28 -21 4 0 7 -3 7 -9 0 -5 -15 -8
-34 -6 -24 4 -36 0 -40 -10 -6 -17 3 -44 15 -44 5 0 9 -7 9 -15 0 -8 6 -12 13
-9 7 2 13 -4 14 -16 1 -11 -2 -20 -8 -20 -5 0 -9 5 -9 11 0 5 -5 7 -11 3 -6
-3 -7 -9 -3 -13 5 -3 10 -13 10 -21 1 -8 5 -24 9 -35 5 -17 5 -17 -4 -4 -6 9
-22 20 -36 23 -14 4 -25 11 -25 16 0 6 -5 10 -11 10 -5 0 -7 -4 -4 -10 3 -5 0
-10 -7 -10 -9 0 -9 -3 2 -10 13 -8 13 -10 1 -10 -11 0 -9 -4 5 -15 15 -11 16
-14 3 -15 -8 0 -21 6 -28 13 -10 10 -11 9 -6 -5 7 -18 48 -33 103 -36 15 -1
21 -6 16 -14 -5 -8 -2 -9 9 -5 10 4 17 2 17 -5 0 -17 52 -61 59 -50 4 6 11 4
19 -4 7 -8 11 -14 8 -14 -13 0 42 -48 62 -54 12 -4 20 -11 17 -16 -2 -4 9 -10
25 -13 21 -5 31 -14 36 -32 3 -14 14 -30 23 -35 13 -8 11 -9 -12 -10 -17 0
-26 -4 -22 -10 4 -6 11 -7 17 -4 6 4 17 -1 24 -11 10 -13 17 -15 26 -7 9 7 17
6 28 -6 13 -14 12 -15 -3 -9 -13 5 -17 1 -17 -14 0 -11 4 -18 9 -15 15 10 43
-20 44 -47 1 -15 5 -27 8 -27 4 0 10 -10 14 -22 l7 -23 8 25 c7 23 8 22 9 -9
1 -33 2 -34 16 -15 14 18 14 18 17 -11 1 -16 1 -43 0 -60 0 -16 2 -24 4 -17 3
6 11 12 17 12 5 0 7 -3 4 -7 -4 -3 -2 -13 5 -20 9 -11 9 -16 -1 -23 -18 -11
-4 -31 16 -23 17 7 16 -1 -2 -52 -4 -11 -3 -15 2 -9 4 6 16 13 26 17 15 6 16
4 7 -13 -9 -16 -8 -20 5 -20 8 0 15 -5 15 -11 0 -5 -4 -8 -8 -5 -5 3 -8 -4 -8
-14 1 -11 -3 -18 -9 -17 -5 1 -9 5 -8 10 2 4 -2 7 -7 7 -6 0 -10 -7 -10 -16 0
-8 -4 -13 -8 -10 -21 13 -8 -36 14 -50 13 -9 21 -20 18 -25 -3 -5 0 -9 6 -9 6
0 10 8 9 18 -3 33 1 48 9 35 9 -15 90 -22 109 -10 9 6 12 -1 10 -23 -2 -25 -4
-28 -13 -15 -8 11 -20 14 -38 9 -18 -4 -26 -2 -26 7 0 11 -2 11 -9 -1 -12 -17
-4 -33 12 -24 7 3 0 -4 -14 -17 -34 -31 -45 -65 -23 -73 9 -3 19 -4 24 -1 4 3
6 -4 3 -16 -4 -13 -8 -17 -13 -9 -5 8 -9 7 -14 -5 -10 -27 -7 -45 7 -39 8 3
13 -4 14 -16 1 -13 -2 -18 -9 -14 -8 5 -9 1 -5 -10 6 -14 3 -17 -9 -12 -12 5
-14 1 -8 -17 10 -33 10 -42 -1 -42 -5 0 -9 6 -9 13 2 17 -2 15 -26 -10 -11
-12 -18 -28 -16 -34 3 -7 -2 -15 -10 -18 -9 -4 -12 -2 -8 5 4 8 -1 9 -15 4
-13 -4 -21 -2 -21 6 0 9 -4 8 -15 -1 -8 -7 -22 -10 -30 -6 -8 3 -15 1 -15 -4
0 -5 9 -12 21 -15 15 -5 17 -10 9 -20 -7 -8 -7 -15 -1 -19 5 -4 14 2 20 11 14
24 14 7 0 -18 -5 -11 -15 -17 -21 -13 -6 4 -9 1 -6 -7 3 -8 10 -13 16 -12 17
4 35 -25 26 -44 -4 -10 -9 -33 -11 -52 -3 -26 0 -32 11 -28 8 3 17 -1 20 -10
9 -23 -1 -28 -20 -12 -16 13 -17 12 -12 -8 4 -15 2 -23 -6 -23 -7 0 -18 -11
-24 -25 -7 -15 -8 -25 -2 -25 5 0 2 -9 -7 -19 -9 -11 -21 -17 -27 -14 -6 4 -5
0 1 -9 7 -8 10 -18 6 -21 -3 -4 -1 -7 5 -7 7 0 12 -12 12 -26 0 -21 -3 -24
-14 -15 -11 9 -15 7 -19 -9 -3 -11 -2 -18 3 -15 4 3 10 -4 13 -15 3 -14 1 -18
-6 -13 -21 13 -36 11 -30 -3 3 -8 0 -14 -7 -14 -9 0 -9 -4 -2 -12 6 -9 4 -19
-9 -32 -11 -12 -19 -14 -19 -7 0 7 -4 10 -10 6 -5 -3 -6 -13 -3 -21 3 -9 -3
-21 -17 -31 -14 -10 -20 -22 -17 -35 4 -13 1 -19 -11 -17 -36 3 -43 -1 -37
-20 3 -11 0 -23 -6 -27 -9 -5 -10 -2 -6 9 3 10 2 17 -4 17 -6 0 -7 5 -3 12 4
6 3 8 -4 5 -13 -9 -4 -48 15 -64 12 -9 11 -13 -8 -26 -11 -9 -18 -20 -15 -25
3 -6 0 -12 -6 -15 -7 -2 -1 -4 14 -3 16 0 28 5 28 9 0 5 5 5 11 1 16 -10 -16
-38 -46 -40 -14 0 -25 3 -25 8 0 4 -9 17 -19 27 -19 19 -20 19 -19 -10 1 -25
3 -27 16 -16 13 11 14 9 1 -10 -8 -13 -18 -23 -24 -24 -5 0 1 -5 14 -10 14 -5
21 -15 18 -23 -4 -10 0 -13 14 -11 17 4 23 -4 17 -22 -2 -5 -7 -7 -13 -5 -5 1
-1 -5 9 -13 11 -8 15 -15 10 -15 -12 0 -6 -68 7 -76 5 -3 6 10 3 28 -6 33 -6
33 11 10 11 -15 14 -32 10 -52 -8 -35 -13 -37 -31 -13 -7 10 -16 14 -20 10 -5
-4 -2 -12 6 -17 8 -6 10 -10 5 -10 -6 0 -17 6 -23 12 -10 10 -12 8 -10 -11 2
-13 -3 -26 -11 -29 -8 -2 -11 0 -8 6 4 5 0 15 -8 22 -8 7 -15 19 -15 27 0 8
-5 11 -10 8 -6 -4 -8 -12 -4 -18 3 -7 -1 -4 -10 7 -14 17 -17 17 -45 3 -31
-15 -31 -15 -31 12 0 15 -6 33 -12 40 -11 12 -9 13 7 7 12 -5 16 -4 10 2 -10
10 -75 25 -75 17 0 -2 7 -11 16 -19 13 -14 14 -16 0 -16 -8 0 -18 5 -21 10 -4
6 -19 9 -33 7 -22 -3 -27 -9 -26 -30 1 -27 -9 -36 -20 -18 -4 5 -2 11 4 13 5
2 6 9 1 17 -14 22 -32 3 -25 -26 5 -18 3 -24 -5 -19 -6 4 -11 2 -11 -4 0 -6
-4 -8 -10 -5 -5 3 -10 1 -10 -5 0 -6 -4 -8 -10 -5 -5 3 -10 1 -10 -4 0 -6 -5
-11 -11 -11 -7 0 -18 -8 -26 -17 -8 -10 -12 -12 -8 -5 4 8 -2 12 -20 12 -14 0
-28 -7 -31 -15 -4 -8 -10 -12 -15 -9 -5 3 -6 -2 -3 -10 3 -9 1 -16 -5 -16 -7
0 -14 7 -17 15 -7 18 -25 20 -21 3 1 -8 -10 -14 -26 -16 -22 -3 -30 1 -34 18
-5 20 -6 19 -20 -7 -8 -15 -13 -44 -12 -63 4 -54 -10 -87 -41 -100 -26 -11
-57 -56 -46 -68 3 -2 -3 -17 -14 -32 -11 -15 -17 -30 -13 -34 3 -3 1 -6 -5 -6
-12 0 -27 -38 -24 -57 2 -7 -2 -13 -9 -13 -6 0 -9 -7 -5 -15 3 -8 1 -15 -5
-15 -15 0 -28 -43 -18 -62 5 -9 27 -19 50 -23 28 -5 43 -13 46 -25 3 -10 11
-21 19 -24 11 -4 12 -10 4 -25 -5 -11 -10 -38 -10 -60 0 -28 -4 -41 -14 -41
-16 0 -29 -24 -31 -57 -1 -24 26 -40 46 -27 8 4 9 3 5 -4 -4 -7 -1 -12 9 -12
9 0 13 -4 10 -10 -3 -5 -14 -10 -24 -10 -10 0 -24 -7 -32 -16 -10 -13 -10 -17
2 -25 20 -13 29 -11 29 6 0 8 6 15 13 15 8 0 12 -13 11 -37 -3 -56 5 -81 28
-89 15 -4 18 -12 14 -30 -5 -17 -1 -26 15 -34 11 -7 24 -9 27 -5 8 8 -19 25
-30 19 -4 -3 -8 -2 -8 3 0 11 20 40 20 29 0 -5 7 -3 15 4 11 9 15 10 15 1 0
-8 8 -10 19 -6 11 3 22 1 26 -5 3 -5 13 -10 21 -10 9 0 12 5 8 12 -4 7 -3 8 4
4 7 -4 9 -22 6 -48 -5 -34 -4 -40 9 -35 9 3 17 3 19 -1 2 -4 19 -15 39 -24 24
-11 36 -23 35 -35 0 -12 7 -19 22 -21 12 -2 22 -9 22 -17 0 -7 3 -21 6 -29 5
-12 2 -15 -10 -10 -11 4 -16 2 -14 -7 2 -7 -6 -15 -17 -17 -11 -2 -26 -9 -33
-15 -22 -18 -52 -19 -52 -1 0 8 -5 12 -11 8 -6 -3 -8 -17 -5 -30 5 -17 2 -24
-8 -24 -15 0 -36 37 -56 102 -6 20 -18 39 -26 42 -10 4 -13 13 -9 26 5 16 2
20 -19 20 -21 0 -26 6 -32 35 -5 30 -14 39 -57 60 -33 16 -55 21 -61 15 -7 -7
-4 -10 7 -10 9 0 17 -4 17 -10 0 -5 -3 -10 -7 -10 -16 0 -83 27 -79 31 2 2
-10 4 -27 3 -22 -1 -40 7 -57 25 -24 25 -60 31 -60 10 0 -6 -16 2 -35 17 -25
19 -42 25 -60 20 -17 -4 -25 -2 -26 6 0 10 -2 10 -6 1 -2 -7 -9 -13 -14 -13
-4 0 -6 6 -3 14 4 11 0 13 -15 9 -12 -3 -21 -1 -21 6 0 19 -38 54 -50 46 -6
-4 -22 -8 -36 -10 -17 -1 -24 3 -24 15 0 9 -9 25 -20 35 -11 10 -20 24 -20 30
0 17 -39 26 -61 14 -31 -16 -57 -10 -91 21 -18 17 -41 33 -51 36 -10 3 -22 17
-28 31 -7 20 -15 24 -35 20 -21 -4 -26 0 -31 24 -4 24 -8 27 -19 18 -18 -15
-18 -4 0 24 8 12 16 40 18 62 3 30 9 43 26 50 12 5 22 15 22 22 0 7 4 13 9 13
4 0 6 -10 4 -23 -3 -14 2 -29 11 -36 14 -12 16 -10 16 10 1 21 2 22 11 7 13
-24 31 -23 47 2 7 12 23 20 41 20 31 0 51 28 29 42 -10 6 -10 10 2 18 10 6 11
10 3 10 -7 0 -13 5 -13 11 0 6 9 8 20 4 24 -8 24 -8 5 45 -8 23 -15 52 -15 64
0 49 -48 71 -64 30 -7 -20 22 -64 43 -65 14 -1 13 -2 -1 -6 -10 -2 -24 1 -31
9 -24 24 -57 85 -57 104 0 11 -14 27 -31 37 -25 14 -30 22 -24 40 17 53 44
195 45 233 0 61 28 74 100 47 8 -3 22 -7 30 -9 8 -1 27 -17 42 -35 21 -25 26
-27 21 -11 -5 19 -2 21 28 16 19 -3 50 -7 69 -9 19 -1 35 -3 35 -4 0 -1 23 -4
50 -6 112 -8 193 -24 233 -44 24 -12 47 -19 52 -16 5 3 19 1 31 -6 19 -10 21
-9 16 6 -4 9 -7 21 -7 26 0 5 -7 9 -15 9 -8 0 -15 4 -15 10 0 5 -19 15 -42 21
-24 6 -61 20 -84 30 -22 11 -46 19 -53 19 -6 0 -22 6 -34 14 -12 8 -51 20 -87
26 -37 7 -92 26 -129 46 -52 28 -71 34 -98 29 -25 -4 -35 -2 -39 10 -3 8 -11
15 -18 15 -7 0 -28 17 -48 38 -35 37 -36 40 -26 83 5 24 9 57 8 73 0 15 4 34
10 40 5 7 16 37 23 67 l14 54 46 3 c50 3 134 -28 144 -53 3 -8 9 -15 14 -15
13 0 -10 43 -27 53 -8 4 -14 14 -14 22 0 26 -52 45 -135 50 -52 3 -65 16 -45
40 7 9 12 43 12 80 0 36 2 65 5 65 3 0 12 -8 19 -17 13 -17 13 -17 14 -1 0 11
-10 20 -25 24 -14 3 -25 12 -25 20 0 17 -2 17 -34 2 -32 -14 -41 -40 -24 -67
15 -25 4 -38 -18 -20 -27 22 -45 19 -62 -12 -10 -16 -22 -29 -29 -29 -6 0 -9
-9 -6 -20 5 -19 2 -21 -37 -24 -8 -1 -15 -8 -15 -16 0 -11 10 -14 35 -13 29 2
39 -3 55 -27 11 -16 30 -32 42 -35 21 -5 22 -9 18 -63 -3 -31 -8 -70 -11 -87
-3 -16 -7 -51 -10 -76 l-6 -47 -73 3 c-50 2 -90 -3 -126 -15 -30 -11 -60 -15
-69 -11 -8 4 -62 6 -120 4 -104 -4 -231 13 -378 52 -45 12 -52 12 -42 0 6 -7
22 -16 35 -19 14 -4 25 -12 25 -20 0 -7 13 -16 30 -19 16 -4 62 -22 102 -41
40 -19 87 -37 103 -41 17 -4 39 -11 50 -16 11 -4 79 -15 150 -23 119 -14 186
-22 218 -29 6 -1 17 -7 24 -14 22 -20 21 -24 -52 -213 -35 -92 -39 -97 -69
-106 -20 -6 -31 -15 -30 -26 2 -23 -1 -23 -26 5 -20 20 -22 21 -31 5 -6 -10
-16 -18 -23 -18 -8 0 -26 -17 -42 -37 -15 -21 -36 -45 -46 -54 -10 -9 -18 -23
-18 -31 0 -8 -5 -19 -11 -25 -16 -16 11 -54 33 -47 10 3 18 2 18 -3 0 -5 14
-10 32 -11 17 -2 38 -8 45 -14 11 -8 12 -7 7 6 -10 25 11 19 23 -7 9 -19 8
-26 -6 -35 -14 -10 -14 -11 3 -5 17 6 18 3 13 -33 -10 -58 -35 -136 -53 -159
-14 -19 -26 -20 -202 -19 -103 1 -223 6 -267 13 -44 7 -150 17 -235 22 -176
10 -206 13 -272 24 -33 5 -48 4 -48 -3 0 -8 -8 -9 -25 -2 -14 5 -25 7 -25 5 0
-2 -11 0 -24 5 -28 10 -71 -13 -49 -28 14 -9 344 -56 451 -64 6 -1 12 -5 12
-10 0 -4 6 -8 14 -8 7 0 28 -14 45 -32 28 -29 36 -32 113 -36 46 -2 88 -9 95
-14 6 -5 30 -6 53 -3 41 6 139 -16 168 -38 7 -5 15 -7 19 -4 3 4 12 -1 20 -11
11 -14 12 -15 7 -1 -4 14 0 16 28 10 29 -6 33 -11 32 -38 -1 -17 -9 -46 -18
-64 -11 -22 -13 -36 -6 -44 8 -9 4 -29 -10 -66 -12 -29 -29 -87 -39 -128 -19
-77 -44 -146 -87 -236 -14 -29 -24 -69 -24 -93 0 -30 -4 -42 -14 -42 -8 0 -18
-5 -22 -12 -4 -7 -3 -8 4 -4 8 5 12 0 12 -13 0 -22 -20 -30 -20 -8 -1 19 -39
-56 -40 -78 -1 -53 -131 -190 -193 -202 -15 -3 -36 -16 -45 -28 -10 -12 -31
-29 -48 -38 -17 -9 -36 -23 -43 -31 -16 -19 -32 -21 -26 -3 8 20 -65 21 -80 0
-11 -15 -14 -14 -33 8 -17 19 -30 24 -61 22 -32 -1 -41 2 -51 23 -21 38 -30
28 -25 -27 2 -27 0 -60 -4 -71 -7 -20 -8 -20 -15 -2 -6 15 -9 16 -16 5 -4 -8
-4 -25 1 -38 7 -18 5 -23 -9 -24 -13 0 -11 -3 6 -9 12 -5 22 -12 22 -15 0 -8
-144 -74 -152 -69 -4 3 -8 12 -8 21 0 10 -6 13 -16 9 -9 -3 -20 -6 -25 -6 -5
0 -9 -6 -9 -14 0 -8 -9 -18 -20 -21 -11 -3 -20 -12 -20 -18 0 -8 -24 -12 -76
-12 -63 -1 -79 -4 -90 -20 -9 -13 -11 -22 -4 -29 5 -5 10 -19 10 -29 0 -12 5
-17 13 -14 8 3 20 1 28 -3 7 -5 18 -5 25 1 8 7 10 2 7 -18 -2 -16 -5 -48 -7
-73 -1 -25 -8 -55 -15 -68 -6 -12 -9 -26 -6 -31 3 -5 -5 -7 -17 -3 -14 3 -19
2 -14 -6 4 -7 3 -12 -2 -12 -5 0 -9 -14 -9 -30 0 -20 3 -26 9 -18 6 10 10 7
14 -9 4 -13 11 -20 18 -16 6 3 -5 -10 -24 -30 -19 -19 -38 -33 -42 -31 -4 3
-5 -2 -2 -10 4 -9 1 -16 -6 -16 -7 0 -10 -7 -6 -15 3 -10 -3 -17 -18 -21 -18
-4 -27 -17 -36 -50 l-13 -44 -61 5 c-33 3 -133 5 -221 4 -350 -5 -765 -1 -845
7 -69 7 -276 10 -340 5 -8 -1 -32 1 -53 3 -29 3 -42 0 -56 -15 -18 -19 -19
-19 -23 -2 -6 21 -49 22 -130 3 -38 -9 -46 -15 -41 -28 6 -15 5 -15 -10 -3
-15 12 -17 12 -12 -1 4 -9 0 -15 -10 -15 -8 0 -15 5 -15 10 0 6 -10 1 -22 -10
-21 -19 -98 -48 -98 -37 0 3 -9 0 -20 -6 -16 -8 -20 -8 -18 2 4 17 -43 23 -53
7 -6 -11 -9 -10 -15 4 -3 9 -14 17 -24 17 -11 0 -21 4 -24 9 -3 4 -24 11 -46
15 -37 6 -39 8 -30 31 5 14 6 25 2 25 -4 0 -18 16 -31 36 -19 27 -22 37 -12
44 20 11 4 50 -17 44 -14 -5 -14 -4 -3 4 22 16 26 62 5 62 -11 0 -14 -5 -10
-16 11 -29 -5 -36 -30 -13 -13 12 -24 17 -24 11 0 -9 -5 -9 -20 0 -28 18 -27
48 3 41 18 -4 19 -3 7 6 -10 7 -11 11 -2 11 6 0 12 9 12 19 0 11 5 23 10 26 6
4 7 12 3 18 -4 7 -6 20 -5 30 2 10 -3 17 -12 17 -9 0 -13 6 -10 13 2 7 -13 30
-36 50 -22 21 -40 41 -40 46 0 4 -20 18 -45 30 -25 12 -45 29 -45 37 0 9 -11
14 -29 14 -16 0 -31 4 -33 10 -2 5 -13 11 -26 13 -13 2 -27 8 -30 14 -4 6 -15
9 -24 7 -10 -1 -18 2 -18 7 0 4 -6 6 -14 3 -8 -3 -17 -1 -21 5 -3 7 0 8 9 5
11 -4 16 0 16 15 0 14 -5 19 -15 15 -9 -4 -15 0 -15 9 0 8 -7 17 -15 21 -8 3
-12 12 -9 21 7 17 -16 21 -32 5 -6 -6 -22 -6 -43 0 -19 5 -37 7 -42 5 -16 -11
-18 13 -2 26 12 10 14 10 9 2 -4 -8 -1 -13 8 -13 20 0 20 9 -1 32 -15 17 -15
19 2 32 16 12 17 13 1 19 -9 4 -15 3 -12 -2 3 -4 -4 -17 -16 -27 -21 -19 -21
-19 -14 1 5 11 9 27 9 35 0 8 5 19 11 23 6 5 2 7 -11 4 -13 -3 -25 -2 -28 2
-8 13 25 50 39 45 8 -3 17 0 22 7 4 7 3 10 -4 5 -21 -13 -22 13 -2 32 19 17
19 20 4 26 -13 5 -14 9 -4 21 10 12 9 15 -9 15 -25 0 -28 18 -5 27 12 4 8 9
-16 21 -20 10 -28 18 -21 25 14 14 -9 46 -27 39 -10 -3 -13 -1 -8 6 6 11 2 13
-19 12 -3 -1 -13 6 -21 15 -12 12 -13 19 -5 29 9 11 7 15 -6 21 -10 5 -21 7
-25 7 -5 -1 -8 3 -8 8 0 6 6 10 13 10 8 0 7 3 -3 9 -8 6 -18 7 -22 4 -11 -6
-62 26 -54 34 3 4 16 -2 28 -13 l22 -19 -20 27 c-10 15 -23 28 -27 28 -5 0 -6
4 -2 10 3 5 -4 19 -16 31 -12 12 -19 29 -16 39 3 11 0 22 -7 25 -6 3 -1 3 12
1 25 -5 28 3 10 23 -10 11 -10 13 0 7 6 -4 12 -2 12 4 0 7 -15 10 -40 7 -22
-2 -40 0 -40 5 0 5 10 8 22 6 16 -2 23 3 26 17 2 14 0 16 -6 7 -9 -14 -42 -6
-42 10 0 6 7 4 17 -3 15 -13 15 -12 2 8 -17 28 -33 29 -57 3 -18 -20 -18 -20
-18 9 0 20 4 27 13 24 9 -4 11 0 7 11 -3 8 -14 18 -25 21 -11 4 -17 11 -14 16
4 5 1 9 -6 9 -8 0 -6 6 4 18 23 25 21 34 -5 28 -15 -4 -13 -1 6 8 l29 13 -27
7 c-15 4 -24 11 -21 16 3 5 -2 21 -11 35 -9 14 -14 28 -11 31 3 3 -1 17 -8 31
-10 18 -11 32 -4 45 7 12 6 18 -1 18 -6 0 -8 5 -4 12 4 7 3 8 -4 4 -6 -4 -9
-13 -5 -22 6 -15 -23 -54 -40 -54 -6 0 -7 3 -4 7 4 3 -1 12 -11 20 -9 7 -12
12 -7 11 6 -2 10 2 10 7 0 6 -3 9 -7 8 -5 -2 -8 4 -8 12 0 8 -4 15 -9 15 -5 0
-8 11 -8 25 0 14 3 28 8 31 5 3 9 10 9 16 0 6 -9 3 -20 -7 -26 -24 -59 -27
-53 -6 4 20 -13 48 -24 37 -4 -5 -2 -11 5 -13 14 -5 6 -23 -10 -23 -6 0 -8 3
-5 6 3 4 2 16 -4 27 -6 10 -7 17 -2 14 5 -3 15 -2 23 4 12 7 10 9 -7 9 -16 0
-21 4 -16 16 3 8 12 13 20 10 9 -4 13 -1 10 6 -2 7 -10 12 -16 11 -6 -2 -11 4
-11 13 0 8 -4 12 -10 9 -7 -4 -7 3 0 19 5 14 6 26 2 26 -4 0 0 5 8 10 13 8 12
11 -5 24 -11 8 -17 18 -13 22 10 9 38 -14 38 -32 0 -7 5 -16 12 -20 7 -4 8 -3
4 4 -4 7 -2 12 5 12 7 0 4 7 -7 15 -17 13 -17 14 -1 15 9 0 17 5 17 10 0 14
-13 13 -28 -2 -8 -8 -12 -9 -12 -1 0 6 4 13 9 15 5 2 12 14 16 28 4 19 -1 33
-19 55 -18 21 -22 32 -15 42 8 9 17 10 33 2 14 -7 11 -2 -9 15 -25 22 -27 26
-11 26 11 0 16 3 13 7 -4 3 -2 12 4 19 12 15 2 57 -12 49 -5 -4 -9 -1 -9 4 0
6 7 11 16 11 9 0 12 5 8 12 -5 7 -2 9 8 6 14 -6 16 2 9 45 0 5 -7 5 -13 1 -10
-5 -10 -4 -1 6 8 9 9 19 2 32 -7 14 -6 18 5 18 8 0 16 -6 19 -12 3 -9 9 -7 20
7 17 22 7 45 -19 45 -8 0 -14 5 -14 11 0 5 4 8 9 4 5 -3 12 -1 16 5 3 5 1 10
-4 10 -6 0 -11 8 -11 18 0 14 -2 15 -10 2 -8 -13 -10 -13 -10 2 0 14 7 16 37
12 21 -3 34 -2 28 3 -14 11 -18 36 -5 28 10 -6 11 -1 12 63 0 24 -4 36 -11 34
-7 -1 -9 2 -6 8 4 6 13 9 21 6 11 -4 12 -1 5 12 -9 17 -11 24 -11 42 0 6 -5
10 -11 10 -6 0 -8 -9 -4 -22 5 -20 5 -21 -5 -5 -7 11 -9 34 -5 58 5 26 3 39
-5 39 -6 0 -8 5 -4 12 5 7 2 9 -8 6 -24 -10 -44 7 -30 25 7 7 10 17 7 20 -3 4
-2 5 2 2 3 -3 17 2 30 10 13 9 23 11 23 5 0 -5 8 -10 18 -10 16 1 16 1 -1 11
-20 12 -24 54 -4 46 7 -3 13 3 13 13 0 10 -6 16 -13 13 -19 -7 -16 15 6 43 11
14 17 33 14 44 -4 16 -2 19 13 14 17 -5 16 -3 -2 13 -31 26 -21 102 16 120 18
9 20 13 8 13 -10 0 -18 2 -18 4 0 2 -3 12 -7 21 -5 15 -3 16 15 6 18 -10 21
-9 16 4 -4 8 -9 15 -13 15 -4 0 -8 9 -9 20 -4 48 -5 50 -18 39 -10 -8 -12 -5
-9 13 3 13 7 40 9 62 6 45 16 60 17 25 0 -13 3 -18 6 -11 2 6 10 9 15 6 6 -4
18 2 26 12 10 13 16 15 19 7 3 -7 14 -12 26 -12 17 1 18 2 5 6 -19 5 -25 33
-7 33 5 0 7 -4 4 -10 -3 -5 0 -10 9 -10 8 0 17 6 20 13 5 9 7 9 12 0 3 -8 15
-11 29 -7 12 3 26 1 29 -5 4 -7 1 -8 -8 -5 -11 4 -16 0 -16 -10 0 -9 4 -16 9
-16 15 0 32 27 25 43 -3 8 0 18 7 23 7 4 10 3 5 -4 -6 -10 18 -42 33 -42 4 0
16 7 27 15 11 9 13 14 5 13 -8 -2 -20 8 -28 22 -7 14 -13 22 -13 17 0 -4 -17
0 -37 8 -20 9 -43 13 -50 11 -17 -7 -18 50 -2 60 8 4 4 13 -12 26 -15 11 -18
16 -6 12 9 -3 17 -1 17 5 0 6 -5 11 -11 11 -6 0 -9 9 -6 20 6 22 -8 28 -16 8
-4 -8 -6 -7 -6 4 -1 9 3 18 9 20 5 2 11 15 12 30 1 15 6 24 10 22 4 -3 8 4 8
15 0 27 11 52 20 46 4 -3 7 6 6 19 -1 20 -4 22 -15 13 -12 -10 -12 -9 -3 10
15 27 16 55 2 33 -8 -13 -10 -13 -10 2 0 9 5 29 12 45 6 15 11 31 10 36 -1 4
3 7 9 7 5 0 9 8 8 18 -1 9 -1 24 0 32 1 13 2 13 11 0 13 -21 23 -5 11 18 -12
23 6 36 29 22 8 -5 21 -5 30 0 9 5 22 5 29 1 10 -6 9 -10 -4 -15 -15 -5 -15
-9 -4 -23 8 -9 14 -23 14 -32 0 -9 4 -22 9 -30 6 -9 3 -17 -8 -23 -13 -7 -14
-13 -5 -30 8 -15 8 -27 0 -44 -6 -15 -7 -25 -1 -29 6 -4 10 3 10 15 0 12 4 18
11 15 5 -4 8 -12 6 -18 -2 -7 0 -20 5 -30 7 -14 4 -23 -11 -36 -25 -21 -27
-33 -6 -25 13 5 20 -6 16 -28 0 -4 6 -5 15 -1 13 5 15 2 9 -17 -5 -16 -4 -20
4 -15 7 4 18 1 26 -5 9 -7 15 -8 15 -2 0 5 -7 12 -15 16 -8 3 -15 11 -15 17 0
7 4 8 12 2 7 -5 26 -10 42 -12 16 -1 36 -9 43 -17 21 -21 36 -17 23 6 -10 18
-7 24 13 21 4 0 7 3 7 8 0 11 33 9 41 -3 8 -11 49 11 49 27 0 8 -4 6 -10 -3
-8 -13 -11 -13 -19 -1 -5 8 -16 11 -25 8 -21 -8 -21 7 1 24 14 12 16 12 8 0
-5 -10 -4 -12 3 -7 7 4 11 23 9 41 -2 28 -5 34 -19 29 -13 -4 -16 -1 -12 10 7
18 32 28 46 19 6 -3 8 -1 5 4 -4 6 6 16 24 22 26 9 29 13 19 31 -9 16 -8 20 5
20 8 0 15 4 15 9 0 5 9 7 19 4 13 -3 21 2 26 16 3 12 11 21 16 21 13 0 11 -18
-3 -22 -7 -3 1 -11 18 -19 l30 -15 -4 28 c-2 15 -9 28 -14 28 -5 0 0 12 11 26
17 22 19 30 9 48 -14 26 -18 57 -6 50 5 -4 7 -12 5 -19 -3 -6 4 -20 15 -29 22
-19 35 -15 22 6 -12 19 -12 47 0 42 6 -2 18 1 26 6 13 9 13 11 0 19 -8 5 -17
8 -21 5 -4 -2 -10 0 -13 5 -3 5 7 7 23 6 24 -2 27 1 24 20 -3 15 0 22 11 22 9
0 16 -4 16 -9 0 -4 5 -8 11 -8 6 0 9 7 6 14 -4 10 -1 13 9 9 7 -3 14 -9 14
-13 0 -4 15 -11 33 -15 26 -5 28 -8 14 -14 -17 -6 -17 -8 3 -34 19 -23 19 -28
6 -33 -9 -3 -13 -10 -11 -15 7 -11 -33 -51 -44 -44 -5 3 -7 -15 -5 -40 3 -31
1 -44 -7 -43 -6 2 -13 -2 -16 -9 -2 -6 4 -10 14 -8 10 1 24 -2 31 -8 9 -7 16
-5 26 8 7 10 18 15 23 12 6 -4 14 0 17 9 3 8 2 12 -3 9 -5 -3 -12 -1 -16 5 -8
12 34 30 54 22 10 -4 13 -1 9 9 -3 9 5 25 18 38 26 25 45 22 24 -4 -16 -19
-10 -19 26 0 18 9 22 15 13 15 -9 0 -19 7 -23 15 -3 8 -1 15 4 15 6 0 10 -4
10 -10 0 -5 4 -10 9 -10 5 0 7 9 4 20 -3 12 0 20 6 20 7 0 10 -4 7 -9 -4 -5 6
-14 21 -19 17 -6 21 -11 11 -11 -11 -1 -15 -6 -12 -16 5 -11 10 -13 19 -5 26
21 22 -4 -4 -29 -37 -34 -58 -74 -42 -79 6 -2 9 -7 6 -11 -2 -5 8 -6 23 -5
l27 4 -27 -11 c-16 -6 -28 -15 -28 -21 0 -5 -8 -7 -17 -4 -10 3 -25 1 -33 -5
-12 -9 -12 -10 4 -5 12 4 25 -1 37 -15 10 -11 22 -18 26 -16 5 3 15 -4 22 -15
11 -18 11 -20 -3 -15 -9 4 -20 -1 -25 -11 -10 -16 -10 -16 -11 1 0 30 -30 20
-30 -10 0 -20 -3 -24 -9 -14 -6 8 -16 11 -31 6 -17 -5 -21 -4 -15 5 5 9 4 11
-4 6 -17 -11 -2 -29 20 -23 24 6 34 -9 19 -28 -10 -12 -10 -15 0 -15 8 0 22
-7 32 -17 22 -20 24 -1 2 22 -9 9 -14 19 -10 22 3 4 13 -2 22 -13 8 -10 12
-13 8 -5 -5 10 -1 12 17 6 17 -4 20 -3 10 3 -9 7 -10 12 -2 16 6 4 11 2 11 -4
0 -7 7 -9 16 -6 10 4 13 2 7 -7 -11 -17 -13 -37 -3 -37 5 0 11 6 14 13 4 6 4
2 2 -10 -4 -24 18 -22 28 3 4 11 10 12 30 2 14 -6 22 -16 19 -22 -4 -6 0 -6 9
1 8 7 18 10 21 6 4 -3 13 -1 20 5 8 7 18 8 22 4 5 -4 5 -2 2 4 -4 7 2 14 13
17 13 3 18 11 14 20 -3 9 2 27 11 41 11 16 13 26 6 26 -6 0 -11 10 -11 21 0
17 3 19 14 10 16 -13 32 1 21 19 -3 5 0 7 8 4 17 -6 41 21 32 36 -3 6 -11 8
-16 4 -5 -3 -8 -1 -7 5 2 5 -5 16 -16 24 -18 13 -18 15 -1 41 22 34 15 42 -14
15 l-22 -20 7 28 c4 15 15 45 26 66 10 21 16 42 13 47 -3 5 1 7 9 4 8 -3 25 4
37 15 30 28 41 14 25 -32 -7 -20 -16 -34 -20 -30 -4 5 -6 -3 -4 -17 3 -27 28
-34 36 -11 3 9 0 11 -9 6 -8 -4 -6 1 4 11 15 17 19 17 28 4 9 -12 10 -11 6 5
-4 21 16 49 27 38 10 -10 46 29 46 49 0 11 4 17 8 14 4 -3 19 16 33 42 16 29
32 46 42 46 9 -1 14 2 11 7 -3 5 2 9 10 9 26 0 30 1 43 12 7 5 18 6 24 2 8 -4
9 -3 5 5 -8 12 33 32 48 23 5 -3 6 0 2 6 -4 7 -1 12 6 13 7 1 -3 5 -22 9 -36
9 -72 -1 -51 -14 6 -4 11 -3 11 3 0 6 7 8 16 4 14 -5 14 -7 2 -14 -16 -9 -54
-6 -50 4 1 4 2 12 2 17 0 6 5 10 12 10 6 0 20 8 31 18 11 9 17 12 14 5 -11
-18 11 -26 28 -9 8 8 15 18 15 22 0 4 -3 5 -6 1 -3 -3 -17 -2 -30 3 -18 7 -24
6 -24 -4 0 -8 -14 -19 -31 -25 -27 -9 -30 -9 -19 4 7 8 16 12 21 9 12 -7 11 0
-2 29 -8 18 -8 30 0 43 10 16 10 14 6 -11 -4 -23 -3 -26 4 -10 11 24 51 62 51
48 0 -5 7 -10 15 -10 22 0 18 10 -8 23 -15 6 -33 7 -47 2 -16 -6 -26 -5 -32 4
-6 10 -8 9 -8 -4 0 -9 -5 -20 -12 -24 -7 -5 -8 -3 -3 6 5 9 4 11 -3 6 -9 -5
-9 -13 -1 -28 7 -12 7 -18 1 -14 -6 3 -12 1 -14 -4 -2 -8 -11 -8 -28 -1 -14 5
-19 10 -11 10 19 1 5 14 -18 18 -12 2 -21 -5 -24 -19 -4 -13 -11 -19 -20 -15
-20 7 -80 -61 -74 -84 5 -19 -15 -32 -37 -23 -15 6 -59 -31 -69 -60 -6 -16
-10 -16 -24 -5 -15 12 -16 12 -10 -4 5 -13 -1 -22 -23 -35 -17 -9 -28 -23 -25
-30 3 -9 -3 -10 -22 -6 -17 5 -24 3 -19 -4 4 -6 -3 -9 -19 -8 -17 2 -27 -3
-32 -18 -4 -12 -6 -24 -5 -28 1 -5 -5 -8 -14 -8 -10 0 -14 -6 -11 -14 4 -10 1
-13 -8 -10 -28 11 -28 45 -1 73 15 15 23 30 19 34 -3 4 2 7 13 7 14 0 16 2 5
9 -9 6 -10 11 -2 15 6 4 11 13 11 19 0 7 -4 6 -10 -3 -8 -13 -10 -13 -10 2 0
9 -3 18 -7 21 -5 2 -2 2 5 1 7 -2 12 7 12 22 0 33 28 63 40 43 5 -7 12 -10 17
-6 4 5 1 12 -7 17 -12 7 -11 13 8 33 22 23 30 43 13 33 -11 -7 -24 21 -26 59
-1 22 7 37 29 57 17 15 34 28 39 28 4 0 7 8 7 17 0 13 -3 14 -12 5 -20 -20
-47 -15 -43 8 2 11 0 22 -5 25 -14 9 0 34 16 28 11 -4 12 -9 4 -18 -8 -9 -8
-15 0 -20 5 -3 10 -1 10 5 0 8 6 7 21 -1 25 -13 39 -2 42 30 1 11 7 21 14 21
7 0 10 7 6 15 -3 9 -2 15 3 14 20 -3 32 2 38 17 9 23 -3 37 -20 23 -12 -10
-17 -9 -27 0 -9 10 -8 11 7 5 17 -6 18 -4 12 19 -5 21 -3 27 10 27 10 0 14 -5
11 -14 -8 -20 30 -31 49 -15 12 9 12 14 2 20 -8 5 -4 10 13 14 16 4 25 14 26
27 2 21 2 21 -18 -1 -11 -12 -25 -18 -31 -15 -6 4 -8 3 -5 -2 8 -13 -10 -41
-19 -31 -5 4 0 21 10 38 15 25 16 33 4 47 -12 15 -11 16 5 3 18 -14 22 -5 11
24 -6 14 -8 13 -21 -5 -16 -23 -38 -27 -30 -6 3 8 -1 20 -9 26 -11 10 -14 9
-14 -4 0 -22 -32 -6 -36 18 -1 9 2 14 6 11 5 -3 15 8 23 24 12 25 13 31 1 35
-8 3 -13 2 -13 -2 3 -19 -2 -23 -16 -12 -11 9 -15 9 -15 1 0 -7 -5 -9 -10 -6
-6 4 -8 10 -5 15 3 5 1 11 -5 15 -5 3 -10 11 -10 16 0 6 3 8 8 6 4 -3 23 6 42
19 19 13 31 24 26 24 -5 0 -3 6 3 14 10 11 9 16 -4 24 -15 8 -15 10 1 27 18
18 19 17 25 -6 8 -26 12 -17 9 18 -1 13 7 26 19 32 27 15 34 14 27 -5 -5 -14
-4 -15 9 -4 9 7 13 20 10 29 -5 12 -3 13 6 4 12 -12 39 -6 51 11 5 7 8 7 8 -1
0 -20 17 -15 23 7 3 11 0 20 -5 20 -6 0 -3 9 7 20 10 11 23 20 29 20 6 0 2 -7
-8 -15 -16 -12 -17 -18 -8 -27 9 -9 12 -8 12 5 0 9 11 19 25 23 14 3 25 10 25
16 0 5 -8 7 -17 4 -10 -3 -25 -1 -33 5 -13 9 -13 10 0 8 36 -4 50 2 50 20 0
13 -8 21 -22 23 l-23 3 25 23 c16 15 27 19 34 12 14 -14 22 -13 41 6 22 22 91
30 113 13 9 -7 14 -10 10 -5 -10 12 20 39 37 32 10 -3 15 1 15 11 0 14 2 14
15 -3 11 -14 14 -15 9 -3 -3 10 0 20 5 24 6 3 9 11 6 16 -6 8 8 13 28 10 4 -1
24 14 44 34 27 27 39 32 53 25 10 -5 21 -6 25 -2 5 4 5 2 2 -4 -8 -15 19 -39
27 -25 4 5 2 12 -4 16 -15 9 -12 25 5 25 14 0 19 12 16 33 -1 4 10 12 24 17
27 10 33 25 13 33 -7 3 -4 6 7 7 18 1 19 1 3 11 -22 12 -23 29 -3 29 8 0 15 5
15 11 0 5 5 7 10 4 6 -3 10 -3 10 2 1 21 33 46 60 48 25 1 37 -5 57 -32 20
-26 29 -31 39 -22 11 9 14 8 14 -5 0 -9 5 -16 10 -16 6 0 10 7 10 16 0 12 7
14 33 9 25 -5 28 -4 15 5 -9 6 -15 17 -12 25 4 8 2 15 -4 15 -6 0 -12 -6 -15
-12 -2 -7 -8 -10 -12 -6 -5 5 2 16 13 27 12 10 22 25 22 32 -1 10 -4 9 -11 -3
-12 -21 -29 -24 -29 -4 0 25 43 26 101 2 41 -16 56 -19 52 -9 -4 9 0 11 13 6
11 -4 15 -3 11 4 -4 6 4 18 18 27 15 10 24 12 23 5 -2 -6 3 -14 10 -16 7 -3
10 1 6 10 -3 8 6 26 21 42 35 34 24 46 -13 14 -15 -13 -21 -17 -14 -9 6 8 12
21 12 30 -1 12 -2 12 -11 -2 -5 -10 -17 -18 -25 -18 -8 0 -13 3 -11 8 3 4 -7
7 -21 8 -78 2 -114 9 -122 23 -6 10 -13 12 -17 6 -13 -17 -29 -15 -30 5 -1 13
8 19 38 24 26 4 38 10 33 18 -4 7 -3 8 5 4 6 -4 9 -11 6 -16 -3 -5 0 -12 6
-16 7 -4 9 -3 5 4 -3 6 1 15 10 20 14 8 14 10 0 25 -15 14 -14 17 6 33 l23 16
-23 -5 c-19 -4 -21 -3 -11 9 9 11 9 14 -1 14 -6 0 -14 -9 -17 -20 -3 -11 -9
-20 -14 -20 -5 0 -9 -7 -9 -15 0 -8 -7 -15 -15 -15 -8 0 -15 5 -15 10 0 6 4
10 10 10 5 0 16 16 25 36 8 19 19 33 25 29 5 -3 10 -1 10 4 0 6 7 11 16 11 9
0 12 -5 8 -12 -4 -7 -3 -8 5 -4 6 4 9 16 6 27 -8 24 12 25 37 2 11 -10 18 -12
18 -4 0 6 -7 14 -15 17 -8 4 -15 10 -15 15 0 11 74 31 93 24 10 -4 17 2 21 19
3 14 11 26 17 26 8 0 7 5 -1 15 -11 13 -8 15 13 15 14 0 28 4 31 9 3 4 17 6
31 3 15 -2 25 0 25 7 0 6 7 11 15 11 8 0 15 9 15 19 0 11 4 23 10 26 6 3 7 -1
4 -10 -5 -11 -2 -14 10 -9 9 3 16 12 16 19 0 8 4 16 9 19 5 4 7 -4 4 -16 -4
-18 -3 -20 6 -8 7 11 29 15 75 15 35 0 62 3 59 8 -2 4 0 7 6 7 5 0 12 -6 15
-12 4 -7 4 -3 2 8 -6 34 10 51 18 20 4 -15 11 -24 16 -21 6 4 7 11 4 17 -4 6
4 3 18 -8 14 -10 24 -24 21 -30 -2 -7 0 -15 6 -19 6 -3 11 1 11 9 0 21 19 31
33 16 9 -9 8 -14 -3 -23 -15 -12 -25 -37 -14 -37 7 0 29 22 35 35 2 6 7 9 11
8 4 -2 13 7 19 20 9 18 9 20 -2 10 -16 -16 -39 -17 -39 -2 0 5 4 8 9 5 4 -3
17 4 27 16 19 21 19 21 -1 14 -15 -5 -17 -4 -9 4 13 13 54 -3 54 -21 0 -6 4
-8 9 -5 5 4 12 0 14 -6 3 -8 6 -6 6 5 1 9 -3 17 -8 17 -5 0 -11 6 -14 14 -5
11 0 12 23 3 24 -9 27 -14 17 -26z m563 29 c0 -5 -2 -10 -4 -10 -3 0 -8 5 -11
10 -3 6 -1 10 4 10 6 0 11 -4 11 -10z m643 4 c3 -4 2 -15 -3 -24 -11 -20 -47
-16 -47 5 0 7 6 11 14 8 7 -3 13 0 13 6 0 12 13 15 23 5z m137 -40 c0 -8 -5
-12 -10 -9 -6 4 -8 11 -5 16 9 14 15 11 15 -7z m-900 -10 c0 -8 -5 -12 -10 -9
-6 4 -8 11 -5 16 9 14 15 11 15 -7z m377 -30 c-3 -3 -12 -4 -19 -1 -8 3 -5 6
6 6 11 1 17 -2 13 -5z m-1653 -29 c-20 -31 -34 -32 -34 -4 0 14 5 19 15 16 8
-4 17 -2 20 3 4 6 8 10 11 10 2 0 -3 -11 -12 -25z m3081 15 c-3 -5 -12 -10
-18 -10 -7 0 -6 4 3 10 19 12 23 12 15 0z m-1547 -18 c5 -15 -66 -13 -71 3 -3
7 8 10 31 10 20 -1 38 -7 40 -13z m1636 -18 c3 -8 2 -12 -4 -9 -6 3 -10 10
-10 16 0 14 7 11 14 -7z m100 4 c-3 -4 -14 -8 -25 -8 -11 0 -18 4 -15 8 2 4
14 8 25 8 11 0 17 -4 15 -8z m-3249 -8 c3 -5 4 -10 1 -10 -2 0 -12 -3 -20 -6
-12 -5 -15 -2 -10 10 7 18 20 21 29 6z m1170 -20 c10 -11 16 -20 13 -20 -3 0
-13 9 -23 20 -10 11 -16 20 -13 20 3 0 13 -9 23 -20z m275 10 c0 -5 -2 -10 -4
-10 -3 0 -8 5 -11 10 -3 6 -1 10 4 10 6 0 11 -4 11 -10z m5370 -4 c0 -3 -4 -8
-10 -11 -5 -3 -10 -1 -10 4 0 6 5 11 10 11 6 0 10 -2 10 -4z m-6855 -16 c3 -5
1 -10 -4 -10 -6 0 -11 5 -11 10 0 6 2 10 4 10 3 0 8 -4 11 -10z m1272 4 c-3
-3 -12 -4 -19 -1 -8 3 -5 6 6 6 11 1 17 -2 13 -5z m17 -19 c-4 -8 -11 -15 -16
-15 -6 0 -5 6 2 15 7 8 14 15 16 15 2 0 1 -7 -2 -15z m1826 11 c0 -3 -4 -8
-10 -11 -5 -3 -10 -1 -10 4 0 6 5 11 10 11 6 0 10 -2 10 -4z m138 -10 c-7 -8
-17 -12 -22 -9 -4 3 -2 9 5 14 22 13 31 11 17 -5z m172 -7 c0 -6 -4 -7 -10 -4
-5 3 -10 11 -10 16 0 6 5 7 10 4 6 -3 10 -11 10 -16z m-3562 -11 c-2 -13 4
-28 12 -35 10 -8 11 -12 3 -13 -7 0 -10 -7 -6 -17 5 -15 3 -14 -10 2 -8 11
-13 24 -10 28 3 5 -5 8 -18 7 -39 -3 -51 -1 -43 11 4 6 19 9 36 5 27 -5 30 -4
25 14 -3 11 -1 20 5 20 5 0 8 -10 6 -22z m1472 12 c0 -5 -2 -10 -4 -10 -3 0
-8 5 -11 10 -3 6 -1 10 4 10 6 0 11 -4 11 -10z m1607 -22 c-3 -7 -5 -2 -5 12
0 14 2 19 5 13 2 -7 2 -19 0 -25z m251 7 c-3 -3 -9 2 -12 12 -6 14 -5 15 5 6
7 -7 10 -15 7 -18z m197 -10 c2 -14 -1 -25 -6 -25 -5 0 -9 7 -9 16 0 10 -6 14
-15 10 -19 -7 -19 -1 1 19 19 19 26 15 29 -20z m-3495 10 c0 -8 -2 -15 -4 -15
-2 0 -6 7 -10 15 -3 8 -1 15 4 15 6 0 10 -7 10 -15z m3013 -14 c3 -14 1 -18
-9 -14 -15 6 -18 16 -7 26 9 10 10 9 16 -12z m562 -1 c3 -5 1 -10 -4 -10 -6 0
-11 5 -11 10 0 6 2 10 4 10 3 0 8 -4 11 -10z m619 -24 c15 -13 26 -29 26 -37
0 -8 -6 -6 -17 7 -50 55 -55 74 -9 30z m-749 4 c3 -5 1 -10 -4 -10 -6 0 -11 5
-11 10 0 6 2 10 4 10 3 0 8 -4 11 -10z m619 -25 c3 -8 1 -15 -4 -15 -6 0 -10
7 -10 15 0 8 2 15 4 15 2 0 6 -7 10 -15z m99 -12 c-4 -10 -2 -14 5 -9 6 3 13
2 17 -4 4 -6 -5 -10 -22 -10 l-28 -1 22 -18 c12 -10 19 -21 16 -25 -10 -10
-46 -7 -63 5 -11 8 -8 9 15 4 28 -6 29 -6 12 12 -13 15 -14 22 -5 31 8 8 8 12
2 12 -6 0 -16 -10 -22 -22 -8 -18 -11 -19 -11 -6 -1 9 4 20 9 23 6 4 7 11 4
17 -5 7 -1 9 9 5 10 -3 17 -2 17 3 0 5 6 7 14 4 9 -3 12 -12 9 -21z m-483 7
c0 -5 -5 -10 -11 -10 -5 0 -7 5 -4 10 3 6 8 10 11 10 2 0 4 -4 4 -10z m200
-31 c0 -5 -4 -9 -10 -9 -5 0 -10 7 -10 16 0 8 5 12 10 9 6 -3 10 -10 10 -16z
m480 -3 c0 -2 -7 -7 -16 -10 -8 -3 -12 -2 -9 4 6 10 25 14 25 6z m-340 -16 c0
-5 -2 -10 -4 -10 -3 0 -8 5 -11 10 -3 6 -1 10 4 10 6 0 11 -4 11 -10z m189
-17 c9 -19 9 -29 1 -37 -8 -8 -9 -6 -5 7 8 20 -5 23 -23 5 -9 -9 -12 -9 -12 0
0 7 5 12 11 12 6 0 9 9 6 20 -7 29 8 25 22 -7z m-124 -2 c3 -5 2 -12 -3 -15
-5 -3 -9 1 -9 9 0 17 3 19 12 6z m175 -16 c0 -2 -7 -5 -15 -9 -9 -3 -15 0 -15
9 0 9 6 12 15 9 8 -4 15 -7 15 -9z m-226 -3 c2 -4 -5 -9 -17 -9 -17 -2 -19 0
-7 7 18 12 18 12 24 2z m86 -23 c10 -4 26 -7 54 -8 16 0 26 -4 22 -8 -11 -11
-70 -9 -78 2 -5 6 -11 5 -17 -4 -6 -10 -10 -10 -16 -1 -6 9 -10 9 -16 -1 -7
-11 -9 -9 -9 6 0 16 6 20 28 19 15 -1 29 -3 32 -5z m-20 -54 c0 -8 -2 -15 -4
-15 -2 0 -6 7 -10 15 -3 8 -1 15 4 15 6 0 10 -7 10 -15z m2590 -30 c17 -21 5
-31 -15 -12 -8 9 -15 18 -15 21 0 11 18 6 30 -9z m-2495 -35 c3 -6 -1 -7 -9
-4 -9 3 -16 1 -16 -6 0 -6 -5 -8 -11 -4 -8 4 -7 9 2 15 18 11 26 11 34 -1z
m-4031 -56 c3 -8 2 -12 -4 -9 -6 3 -10 10 -10 16 0 14 7 11 14 -7z m-1264 -75
c0 -17 -20 -49 -30 -49 -14 0 -12 34 2 48 15 15 28 15 28 1z m5423 -44 c-6
-17 -25 -15 -31 3 -2 7 5 12 17 12 14 0 19 -5 14 -15z m47 6 c0 -10 -30 -24
-37 -17 -3 3 -2 9 2 15 8 13 35 15 35 2z m-3 -117 c-3 -3 -12 -4 -19 -1 -8 3
-5 6 6 6 11 1 17 -2 13 -5z m-5101 -63 c-4 -6 -22 -11 -39 -10 -30 0 -31 1 -9
11 12 6 22 18 22 27 0 14 2 14 16 -1 9 -9 13 -21 10 -27z m21 7 c-3 -7 -5 -2
-5 12 0 14 2 19 5 13 2 -7 2 -19 0 -25z m4993 11 c0 -5 -4 -9 -10 -9 -5 0 -10
7 -10 16 0 8 5 12 10 9 6 -3 10 -10 10 -16z m-4727 -14 c-7 -21 -13 -19 -13 6
0 11 4 18 10 14 5 -3 7 -12 3 -20z m4806 -7 c0 -13 -3 -17 -6 -10 -2 6 -9 10
-14 6 -10 -6 -12 9 -2 19 13 14 23 7 22 -15z m2151 -29 c0 -5 -4 -9 -10 -9 -5
0 -10 7 -10 16 0 8 5 12 10 9 6 -3 10 -10 10 -16z m-2090 7 c0 -2 -9 -6 -20
-9 -11 -3 -18 -1 -14 4 5 9 34 13 34 5z m-5330 -28 c0 -4 -4 -8 -9 -8 -6 0
-12 4 -15 8 -3 5 1 9 9 9 8 0 15 -4 15 -9z m-345 -58 c-3 -5 -10 -10 -16 -10
-5 0 -9 5 -9 10 0 6 7 10 16 10 8 0 12 -4 9 -10z m5555 0 c0 -5 -4 -10 -10
-10 -5 0 -10 5 -10 10 0 6 5 10 10 10 6 0 10 -4 10 -10z m-37 -36 c-23 -17
-33 -17 -33 0 0 8 8 16 18 19 27 6 35 -4 15 -19z m-5570 -4 c3 -11 1 -20 -4
-20 -5 0 -9 -7 -9 -16 0 -13 -3 -14 -14 -5 -10 8 -16 9 -21 1 -11 -18 -23 -2
-18 24 5 23 17 32 49 35 7 0 14 -8 17 -19z m581 -26 c3 -8 2 -12 -4 -9 -6 3
-10 10 -10 16 0 14 7 11 14 -7z m4906 -4 c0 -5 -4 -10 -10 -10 -5 0 -10 5 -10
10 0 6 5 10 10 10 6 0 10 -4 10 -10z m67 -4 c-5 -16 -27 -19 -27 -3 0 7 7 14
15 14 9 0 14 -5 12 -11z m-4927 -6 c0 -5 -7 -10 -16 -10 -8 0 -12 5 -9 10 3 6
10 10 16 10 5 0 9 -4 9 -10z m-262 -239 c-7 -11 -17 -17 -22 -14 -6 4 -5 8 2
11 7 2 10 8 6 13 -3 5 2 9 10 9 13 0 14 -3 4 -19z m-173 -91 c3 -5 1 -10 -4
-10 -6 0 -11 5 -11 10 0 6 2 10 4 10 3 0 8 -4 11 -10z m95 -10 c0 -5 -5 -10
-11 -10 -5 0 -7 5 -4 10 3 6 8 10 11 10 2 0 4 -4 4 -10z m5099 -37 c2 -2 -3
-3 -11 -3 -9 0 -19 7 -22 16 -6 15 -4 15 11 3 10 -7 20 -15 22 -16z m-5104 -3
c-3 -5 -12 -7 -20 -3 -21 7 -19 13 6 13 11 0 18 -4 14 -10z m5221 -2 c4 -6 3
-8 -4 -4 -6 3 -17 -3 -25 -14 -12 -18 -16 -19 -27 -5 -10 12 -10 16 1 19 16 5
43 14 46 15 1 1 5 -4 9 -11z m-5368 -12 c-7 -8 -17 -12 -22 -9 -4 3 -2 9 5 14
22 13 31 11 17 -5z m5373 -39 c-10 -9 -11 -8 -5 6 3 10 9 15 12 12 3 -3 0 -11
-7 -18z m-5390 -24 c-12 -20 -14 -14 -5 12 4 9 9 14 11 11 3 -2 0 -13 -6 -23z
m5380 5 c21 -24 23 -28 10 -28 -5 0 -16 11 -25 25 -20 31 -10 33 15 3z m-5121
-43 c5 3 11 1 15 -5 3 -5 1 -10 -6 -10 -6 0 -17 -7 -24 -17 -7 -9 -17 -13 -23
-9 -18 11 -14 26 5 19 13 -5 15 -2 10 11 -4 10 -4 23 0 29 5 8 9 6 11 -6 2 -9
7 -15 12 -12z m-195 4 c-9 -13 29 -50 54 -52 19 -1 18 -18 -3 -46 -8 -11 -8
-13 2 -7 14 9 62 16 62 9 0 -2 -12 -8 -26 -13 -14 -6 -22 -14 -19 -20 4 -6 -1
-7 -10 -3 -10 3 -20 1 -24 -5 -4 -6 -17 -9 -29 -5 -12 3 -19 9 -16 14 3 5 9 7
14 4 5 -3 11 -1 14 4 3 5 -4 12 -17 15 -20 6 -20 7 -4 17 9 5 17 15 17 21 0 6
-9 3 -19 -6 -11 -10 -17 -24 -15 -31 3 -7 -2 -15 -10 -18 -9 -4 -16 -2 -16 3
0 6 -6 10 -14 10 -8 0 -18 5 -22 12 -4 7 -3 8 4 4 7 -4 12 -2 12 3 0 6 5 11
11 11 5 0 7 -5 3 -11 -4 -8 0 -8 15 0 26 14 26 22 1 49 -19 20 -15 27 12 23 4
0 5 6 2 14 -4 10 0 15 11 15 9 0 13 -5 10 -11z m-65 -9 c0 -5 -2 -10 -4 -10
-3 0 -8 5 -11 10 -3 6 -1 10 4 10 6 0 11 -4 11 -10z m-43 -42 c-3 -8 -6 -5 -6
6 -1 11 2 17 5 13 3 -3 4 -12 1 -19z m58 2 c3 -5 1 -10 -4 -10 -6 0 -11 5 -11
10 0 6 2 10 4 10 3 0 8 -4 11 -10z m210 -20 c3 -5 1 -10 -4 -10 -6 0 -11 5
-11 10 0 6 2 10 4 10 3 0 8 -4 11 -10z m-240 -100 c3 -5 1 -10 -4 -10 -6 0
-11 5 -11 10 0 6 2 10 4 10 3 0 8 -4 11 -10z m129 -6 c7 -19 -14 -29 -25 -13
-12 20 -11 26 6 26 8 0 16 -6 19 -13z m-84 -34 c0 -5 -5 -10 -11 -10 -5 0 -7
5 -4 10 3 6 8 10 11 10 2 0 4 -4 4 -10z m370 -229 c0 -5 -7 -11 -14 -14 -10
-4 -13 -1 -9 9 6 15 23 19 23 5z m-655 -53 c0 -13 -4 -29 -9 -36 -13 -20 1
-26 19 -8 9 9 13 20 10 26 -3 5 0 10 8 10 10 0 15 -10 14 -33 -1 -30 -3 -33
-31 -31 -16 1 -36 10 -43 20 -7 10 -13 12 -13 6 0 -15 -36 -10 -53 8 -10 10
-9 11 3 4 8 -5 21 -9 28 -10 10 -2 11 1 1 12 -14 18 -3 32 28 37 13 2 26 6 29
10 10 10 10 10 9 -15z m-360 -18 c-3 -5 -1 -18 4 -27 8 -14 11 -15 11 -3 1 10
4 8 10 -5 5 -14 3 -24 -7 -32 -17 -13 0 -28 20 -17 10 6 10 4 0 -7 -7 -7 -13
-21 -13 -30 0 -10 -11 -30 -25 -45 -13 -14 -22 -30 -19 -35 3 -5 -2 -6 -9 -3
-17 6 -30 44 -15 44 5 0 6 5 2 12 -5 7 -14 2 -26 -15 -11 -15 -25 -27 -31 -27
-8 0 -9 3 -1 8 17 12 23 39 11 51 -8 8 -8 11 2 11 10 0 11 3 2 14 -9 11 -8 15
4 20 9 3 13 10 10 16 -3 5 1 10 9 10 9 0 16 6 16 13 0 9 3 8 9 -2 13 -20 34
-2 27 24 -3 12 -3 25 1 29 10 9 15 7 8 -4z m-272 -17 c-5 -12 -2 -15 10 -10
11 4 17 1 17 -8 0 -8 -4 -15 -9 -15 -5 0 -5 -15 -1 -35 4 -20 4 -35 -1 -35
-16 0 -10 -15 12 -28 20 -13 21 -12 14 18 -4 19 -2 36 5 45 9 11 9 15 1 15 -6
0 -11 5 -11 10 0 6 8 10 19 10 15 0 19 -8 19 -41 1 -31 -3 -39 -13 -35 -9 3
-12 0 -8 -10 3 -8 1 -20 -5 -27 -5 -6 -13 -28 -17 -47 -7 -33 -8 -34 -16 -12
-5 13 -7 28 -4 32 3 5 1 11 -5 15 -5 3 -10 17 -10 31 0 13 -6 24 -12 24 -8 0
-9 3 -3 8 6 4 11 24 13 46 2 30 -1 37 -13 32 -12 -4 -13 -2 -2 14 15 24 29 26
20 3z m1327 -15 c-13 -5 -25 -6 -29 -3 -9 10 21 24 37 17 12 -4 10 -7 -8 -14z
m40 -22 c0 -3 -4 -8 -10 -11 -5 -3 -10 -1 -10 4 0 6 5 11 10 11 6 0 10 -2 10
-4z m-723 -41 c0 -18 -19 -15 -25 3 -2 7 3 12 11 12 7 0 14 -7 14 -15z m6150
-30 c-1 -1 -9 -6 -18 -13 -14 -10 -18 -10 -23 3 -4 11 -2 14 6 9 7 -5 9 -2 5
8 -8 24 4 30 19 10 7 -9 12 -17 11 -17z m36 11 c10 -8 14 -17 8 -20 -5 -3 -12
0 -14 6 -4 9 -6 7 -6 -3 -1 -20 -27 -43 -35 -31 -3 5 4 16 16 26 17 15 18 20
7 27 -8 5 -9 9 -4 9 6 -1 18 -7 28 -14z m-5583 -16 c13 -8 13 -10 -2 -10 -9 0
-20 5 -23 10 -8 13 5 13 25 0z m-240 -32 c0 -6 -6 -5 -15 2 -8 7 -15 14 -15
16 0 2 7 1 15 -2 8 -4 15 -11 15 -16z m-1049 -15 c12 -16 12 -17 -1 -7 -8 6
-22 14 -30 17 -13 5 -12 6 1 6 9 1 23 -7 30 -16z m899 1 c0 -9 -5 -14 -12 -12
-18 6 -21 28 -4 28 9 0 16 -7 16 -16z m5989 -7 c0 -12 -3 -17 -5 -11 -3 7 -14
10 -24 7 -11 -3 -20 -1 -20 4 0 14 7 18 30 20 15 1 20 -4 19 -20z m-7012 -22
c0 -8 -4 -12 -9 -9 -4 3 -8 0 -8 -5 0 -6 -4 -11 -10 -11 -5 0 -10 11 -10 24 0
18 4 23 18 19 10 -2 19 -11 19 -18z m401 -9 c9 -5 9 -13 2 -27 -6 -10 -7 -19
-3 -19 4 0 1 -6 -5 -12 -10 -10 -8 -16 10 -31 l23 -18 -24 11 c-20 11 -23 10
-18 -3 3 -8 -1 -23 -8 -34 -12 -14 -16 -15 -23 -5 -7 11 -10 9 -15 -7 -3 -14
-13 -21 -29 -21 -22 0 -25 4 -27 50 -1 32 2 50 9 50 7 0 9 8 5 19 -3 12 0 21
10 25 8 3 15 11 15 18 0 15 57 18 78 4z m6657 -16 c3 -5 2 -10 -4 -10 -5 0
-13 5 -16 10 -3 6 -2 10 4 10 5 0 13 -4 16 -10z m-7128 -25 c0 -8 -4 -12 -9
-9 -4 3 -8 9 -8 15 0 5 4 9 8 9 5 0 9 -7 9 -15z m713 1 c0 -3 -4 -8 -10 -11
-5 -3 -10 -1 -10 4 0 6 5 11 10 11 6 0 10 -2 10 -4z m6358 -17 c3 -12 2 -12
-6 0 -6 8 -15 10 -22 6 -9 -5 -11 -4 -6 4 10 15 28 10 34 -10z m47 1 c3 -6 -1
-7 -9 -4 -18 7 -21 14 -7 14 6 0 13 -4 16 -10z m-6682 -121 c7 -26 -2 -51 -16
-46 -14 4 -18 37 -5 37 6 0 8 7 4 15 -3 8 -2 15 3 15 5 0 11 -9 14 -21z m681
-28 c6 -9 -35 -24 -43 -15 -6 5 18 24 31 24 4 0 9 -4 12 -9z m206 -7 c0 -8
-19 -13 -24 -6 -3 5 1 9 9 9 8 0 15 -2 15 -3z m-909 -34 c11 0 17 -5 14 -10
-8 -13 -45 6 -44 23 0 9 2 9 6 0 2 -7 14 -13 24 -13z m63 5 c-4 -8 -11 -15
-16 -15 -6 0 -5 6 2 15 7 8 14 15 16 15 2 0 1 -7 -2 -15z m826 -25 c0 -5 -5
-10 -11 -10 -5 0 -7 5 -4 10 3 6 8 10 11 10 2 0 4 -4 4 -10z m-26 -30 c8 -16
10 -30 6 -30 -5 0 -7 -6 -4 -14 3 -8 1 -17 -4 -20 -5 -3 -8 8 -6 24 3 21 -1
30 -11 30 -17 0 -17 2 -9 24 8 22 10 21 28 -14z m-784 5 c-7 -8 -18 -15 -24
-14 -6 0 -5 3 3 6 11 5 11 7 0 14 -10 6 -7 9 10 9 20 0 21 -2 11 -15z m596
-23 c-17 -16 -18 -16 -5 5 7 12 15 20 18 17 3 -2 -3 -12 -13 -22z m-782 -27
c-4 -8 -8 -15 -10 -15 -2 0 -4 7 -4 15 0 8 4 15 10 15 5 0 7 -7 4 -15z m41 5
c3 -5 1 -10 -4 -10 -6 0 -11 5 -11 10 0 6 2 10 4 10 3 0 8 -4 11 -10z m74 -36
c2 -2 -41 2 -57 5 -2 1 0 6 3 11 5 9 36 0 54 -16z m6476 -24 c3 -5 1 -10 -4
-10 -6 0 -11 5 -11 10 0 6 2 10 4 10 3 0 8 -4 11 -10z m-6757 -188 c17 -11 4
-42 -17 -41 -10 0 -11 2 -3 6 17 7 15 23 -4 23 -8 0 -12 5 -9 10 7 12 16 12
33 2z m6755 -55 c3 -8 -1 -14 -8 -14 -7 0 -11 6 -8 14 3 7 6 13 8 13 2 0 5 -6
8 -13z m-7043 -472 c-7 -9 -15 -13 -19 -10 -3 3 1 10 9 15 21 14 24 12 10 -5z
m-493 -17 c-3 -8 -6 -5 -6 6 -1 11 2 17 5 13 3 -3 4 -12 1 -19z m7285 -50 c14
3 19 1 14 -6 -4 -7 -1 -12 10 -12 14 0 14 -2 3 -16 -8 -10 -15 -12 -17 -5 -5
15 -29 14 -34 -1 -3 -7 -5 3 -5 22 0 19 2 30 4 24 2 -7 13 -9 25 -6z m-42 -4
c0 -8 -19 -13 -24 -6 -3 5 1 9 9 9 8 0 15 -2 15 -3z m-7120 -85 c0 -6 -4 -7
-10 -4 -5 3 -10 11 -10 16 0 6 5 7 10 4 6 -3 10 -11 10 -16z m-153 -71 c-3 -7
-5 -2 -5 12 0 14 2 19 5 13 2 -7 2 -19 0 -25z m156 19 c3 -8 1 -20 -5 -28 -8
-11 -9 -10 -4 4 3 9 1 17 -5 17 -6 0 -7 5 -4 10 8 13 12 13 18 -3z m77 -8 c0
17 13 6 16 -14 1 -8 -6 -13 -17 -12 -12 1 -19 9 -19 22 0 16 2 17 10 5 8 -12
10 -12 10 -1z m6779 -46 c-1 -34 -2 -35 -9 -13 -11 36 -11 50 0 50 6 0 10 -17
9 -37z m328 12 c0 -8 -4 -12 -9 -9 -4 3 -8 9 -8 15 0 5 4 9 8 9 5 0 9 -7 9
-15z m3 -55 c0 -5 -5 -10 -11 -10 -5 0 -7 5 -4 10 3 6 8 10 11 10 2 0 4 -4 4
-10z m-6870 -24 c0 -2 -7 -7 -16 -10 -8 -3 -12 -2 -9 4 6 10 25 14 25 6z m-90
-16 c0 -5 -5 -10 -11 -10 -5 0 -7 5 -4 10 3 6 8 10 11 10 2 0 4 -4 4 -10z
m155 -50 c3 -6 -1 -7 -9 -4 -18 7 -21 14 -7 14 6 0 13 -4 16 -10z m-38 -102
c-3 -7 -5 -2 -5 12 0 14 2 19 5 13 2 -7 2 -19 0 -25z m-520 -10 c-3 -8 -6 -5
-6 6 -1 11 2 17 5 13 3 -3 4 -12 1 -19z m571 -14 c-10 -10 -69 -13 -63 -4 4 6
20 10 37 10 17 0 29 -3 26 -6z m-80 -31 c0 -5 2 -16 7 -26 4 -10 5 -21 1 -24
-7 -7 -25 39 -19 50 2 4 6 7 9 7 2 0 3 -3 2 -7z m-314 -51 c-8 -2 -11 -9 -7
-15 3 -7 -4 -3 -16 8 -20 18 -21 20 -5 26 10 3 24 1 30 -5 9 -8 9 -12 -2 -14z
m-19 -42 c3 -5 1 -10 -4 -10 -6 0 -11 5 -11 10 0 6 2 10 4 10 3 0 8 -4 11 -10z
m5245 0 c0 -5 -5 -10 -11 -10 -5 0 -7 5 -4 10 3 6 8 10 11 10 2 0 4 -4 4 -10z
m-4880 -65 c0 -8 -9 -19 -21 -25 -20 -11 -20 -11 -4 14 20 30 25 32 25 11z
m-73 -90 c0 -8 -4 -12 -9 -9 -5 3 -6 10 -3 15 9 13 12 11 12 -6z m6147 0 c-6
-16 -24 -21 -24 -7 0 11 11 22 21 22 5 0 6 -7 3 -15z m-6104 -111 c0 -8 -8
-14 -17 -13 -11 0 -13 3 -5 6 6 2 12 9 12 14 0 6 -5 7 -12 3 -7 -4 -8 -3 -4 5
9 14 26 5 26 -15z m-375 -52 c-3 -3 -11 0 -18 7 -9 10 -8 11 6 5 10 -3 15 -9
12 -12z m365 -13 c0 -14 -17 -10 -23 5 -4 10 -1 13 9 9 7 -3 14 -9 14 -14z
m4350 12 c0 -5 -16 -9 -35 -9 -19 0 -38 4 -41 9 -3 5 13 9 35 9 23 0 41 -4 41
-9z m-4374 -67 c-19 -19 -21 -11 -4 16 7 11 14 16 16 10 2 -5 -4 -17 -12 -26z
m24 -38 c0 -3 -4 -8 -10 -11 -5 -3 -10 -1 -10 4 0 6 5 11 10 11 6 0 10 -2 10
-4z m6100 -6 c0 -5 -2 -10 -4 -10 -3 0 -8 5 -11 10 -3 6 -1 10 4 10 6 0 11 -4
11 -10z m-6170 -55 c0 -8 -4 -15 -8 -15 -5 0 -9 7 -9 15 0 8 4 15 9 15 4 0 8
-7 8 -15z m5510 -6 c0 -6 -4 -7 -10 -4 -5 3 -10 11 -10 16 0 6 5 7 10 4 6 -3
10 -11 10 -16z m-5373 -81 c-3 -8 -6 -5 -6 6 -1 11 2 17 5 13 3 -3 4 -12 1
-19z m5211 -10 c33 3 52 0 52 -7 0 -6 14 -11 30 -11 17 0 38 -4 48 -10 9 -5
29 -14 45 -20 17 -6 27 -17 27 -30 0 -13 7 -20 19 -20 10 0 30 -9 44 -20 14
-11 32 -20 40 -20 20 0 38 -24 43 -59 6 -34 -8 -48 -26 -26 -22 27 -42 18 -35
-15 6 -29 5 -31 -27 -34 -7 -1 -15 -4 -18 -7 -3 -4 -19 -8 -36 -10 -28 -3 -52
9 -104 53 -8 7 -32 21 -54 31 -31 14 -41 15 -48 5 -11 -19 -10 -25 8 -32 8 -3
12 -11 8 -17 -11 -18 -14 -62 -5 -74 18 -24 8 -79 -11 -63 -2 1 -15 -9 -30
-22 -28 -24 -37 -50 -17 -50 5 0 7 5 3 11 -4 7 -1 10 7 7 15 -5 20 -28 6 -28
-12 1 -37 -27 -37 -42 0 -13 -19 -26 -72 -48 -16 -7 -28 -16 -28 -21 0 -5 -6
-9 -13 -9 -8 0 -22 -9 -31 -19 -24 -27 -62 -32 -63 -10 -1 10 4 16 10 13 7 -2
18 6 26 17 11 19 11 23 -3 31 -12 7 -14 14 -7 26 5 10 17 47 26 82 9 36 19 72
22 80 3 8 5 21 4 28 -1 7 3 29 9 48 7 19 13 41 14 47 2 7 6 30 11 52 16 87 48
191 63 207 14 17 16 17 31 0 12 -14 28 -17 69 -14z m-5168 -19 c0 -5 -5 -7
-10 -4 -6 4 -17 1 -25 -5 -15 -12 -22 0 -8 13 10 11 43 8 43 -4z m9090 -76
c-1 -18 -28 -44 -35 -33 -4 6 -1 17 5 25 13 16 30 20 30 8z m-3060 -251 c-1
-36 -33 -74 -56 -65 -14 5 -16 2 -10 -20 5 -22 3 -26 -11 -21 -15 5 -15 4 -3
-4 10 -8 18 -8 27 0 10 8 12 7 7 -6 -3 -9 -1 -16 5 -16 6 0 11 5 11 10 0 6 9
10 21 10 15 0 19 -4 15 -16 -3 -9 -6 -24 -6 -33 0 -10 -9 -28 -20 -41 -11 -12
-17 -26 -14 -31 9 -16 -19 -46 -40 -43 -13 3 -10 0 7 -7 15 -6 27 -16 27 -21
0 -6 -2 -9 -6 -6 -3 3 -21 2 -40 -2 -35 -8 -42 -2 -22 18 21 21 2 23 -25 1
-32 -24 -35 -49 -7 -49 11 0 20 -4 20 -9 0 -5 2 -16 5 -23 4 -10 -3 -14 -24
-14 -17 0 -28 3 -26 7 3 4 -2 12 -10 19 -12 10 -13 7 -5 -22 6 -18 10 -34 10
-35 0 -1 -6 0 -14 3 -8 3 -12 12 -10 19 3 7 0 16 -5 20 -6 3 -8 11 -5 17 5 8
1 9 -11 4 -14 -5 -15 -3 -8 6 6 7 9 23 7 35 -2 15 1 22 9 20 6 -1 11 6 9 16
-2 9 2 17 8 17 5 0 10 -4 10 -10 0 -5 5 -10 10 -10 6 0 10 9 10 20 0 16 7 20
30 20 17 0 30 4 30 9 0 4 -17 5 -38 1 -29 -5 -39 -3 -39 6 0 7 4 11 9 8 4 -3
8 -1 8 5 0 5 -8 15 -17 20 -11 6 -13 11 -5 11 7 0 10 5 7 10 -3 6 -2 10 4 10
5 0 12 -6 14 -12 3 -8 6 -6 6 5 1 10 9 17 20 17 11 0 22 4 26 9 7 12 -38 10
-46 -1 -3 -5 -12 -2 -19 7 -11 13 -10 15 3 9 14 -5 14 -2 4 25 -6 17 -18 32
-27 35 -8 2 -4 4 10 5 l24 1 -22 16 c-22 15 -30 44 -12 44 5 0 6 -7 3 -17 -4
-10 -2 -14 5 -10 18 12 62 -14 63 -37 0 -12 3 -15 6 -8 2 6 11 12 19 12 8 0
14 5 14 10 0 6 7 10 15 10 8 0 15 7 15 15 0 9 7 18 15 21 8 4 15 15 15 26 0
10 5 16 10 13 6 -3 10 -18 10 -33z m-5823 -24 c-3 -8 -6 -5 -6 6 -1 11 2 17 5
13 3 -3 4 -12 1 -19z m-12 -28 c3 -5 2 -10 -4 -10 -5 0 -13 5 -16 10 -3 6 -2
10 4 10 5 0 13 -4 16 -10z m5790 -30 c3 -5 1 -10 -4 -10 -6 0 -11 5 -11 10 0
6 2 10 4 10 3 0 8 -4 11 -10z m-5745 -55 c5 3 11 1 14 -4 4 -5 1 -13 -5 -17
-13 -8 -29 14 -28 36 1 11 3 10 6 -3 2 -9 8 -15 13 -12z m-30 1 c0 -3 -4 -8
-10 -11 -5 -3 -10 -1 -10 4 0 6 5 11 10 11 6 0 10 -2 10 -4z m64 -44 c3 -5 -1
-9 -9 -9 -8 0 -15 4 -15 9 0 4 4 8 9 8 6 0 12 -4 15 -8z m13 -52 c-2 -11 -7
-23 -12 -27 -4 -5 -6 2 -3 14 3 12 3 22 -1 21 -18 -2 -24 3 -11 11 19 13 30 4
27 -19z m7973 -60 c0 -5 -4 -10 -10 -10 -5 0 -10 5 -10 10 0 6 5 10 10 10 6 0
10 -4 10 -10z m-2436 -137 c-5 -5 -12 -12 -16 -18 -4 -6 -8 -2 -8 8 0 9 7 17
17 17 9 0 12 -3 7 -7z m-38 -40 c-10 -10 -19 5 -10 18 6 11 8 11 12 0 2 -7 1
-15 -2 -18z m-5736 -113 c0 -5 -7 -10 -16 -10 -8 0 -12 5 -9 10 3 6 10 10 16
10 5 0 9 -4 9 -10z m5730 -91 c11 -8 12 -12 2 -16 -6 -2 -10 -9 -6 -14 3 -5 1
-9 -4 -9 -6 0 -13 7 -16 16 -3 8 -2 12 4 9 6 -3 10 -2 10 4 0 5 -6 12 -12 14
-7 3 -8 6 -3 6 6 0 17 -4 25 -10z m-1700 -3 c0 -3 -4 -8 -10 -11 -5 -3 -10 -1
-10 4 0 6 5 11 10 11 6 0 10 -2 10 -4z m-459 -909 c-1 -12 -15 -9 -19 4 -3 6
1 10 8 8 6 -3 11 -8 11 -12z m-1234 -3 c-3 -3 -12 -4 -19 -1 -8 3 -5 6 6 6 11
1 17 -2 13 -5z m3 -38 c0 -3 -4 -8 -10 -11 -5 -3 -10 -1 -10 4 0 6 5 11 10 11
6 0 10 -2 10 -4z m3 -85 c17 -17 -63 -17 -89 0 -25 16 -25 16 27 12 30 -2 57
-7 62 -12z m139 -13 c-7 -7 -12 -8 -12 -2 0 6 3 14 7 17 3 4 9 5 12 2 2 -3 -1
-11 -7 -17z m13 -78 c-3 -5 -10 -10 -16 -10 -5 0 -9 5 -9 10 0 6 7 10 16 10 8
0 12 -4 9 -10z m185 0 c11 -8 7 -9 -14 -4 -17 4 -31 2 -35 -5 -8 -13 -41 -5
-41 10 0 12 71 11 90 -1z m70 0 c0 -5 -4 -10 -10 -10 -5 0 -10 5 -10 10 0 6 5
10 10 10 6 0 10 -4 10 -10z m-66 -261 c-3 -5 -10 -6 -16 -3 -7 4 -8 2 -4 -4 4
-7 2 -12 -3 -12 -13 0 -13 3 -5 24 3 8 12 12 20 9 8 -3 11 -9 8 -14z m46 6 c0
-8 -4 -15 -10 -15 -5 0 -7 7 -4 15 4 8 8 15 10 15 2 0 4 -7 4 -15z m365 -11
c9 3 15 0 15 -9 0 -21 17 -27 41 -14 15 7 19 8 15 0 -4 -6 -3 -18 2 -27 7 -12
11 -13 17 -5 5 9 10 9 21 0 12 -10 12 -14 -3 -25 -17 -12 -16 -13 5 -14 14 0
22 -5 20 -12 -4 -12 -24 -15 -135 -22 -39 -2 -77 -7 -84 -11 -24 -15 -99 -16
-113 -2 -9 9 -35 13 -70 13 -46 -1 -56 2 -56 15 0 21 -30 33 -44 19 -7 -7 -3
-10 12 -10 32 0 27 -17 -5 -21 -39 -6 -74 1 -68 12 4 5 -1 9 -9 9 -9 0 -16 6
-16 13 0 8 -3 8 -9 -2 -17 -26 -41 -5 -37 31 3 18 5 36 5 39 1 11 41 18 46 9
7 -11 45 -9 45 2 0 4 14 5 32 1 22 -4 29 -3 24 5 -5 8 -2 10 8 6 9 -3 24 -3
34 1 26 12 52 13 45 2 -3 -5 3 -6 15 -3 14 5 24 1 32 -11 10 -16 10 -15 5 4
-5 17 -3 21 7 18 7 -3 40 -2 73 3 44 5 68 4 88 -6 15 -8 34 -11 42 -8z m-515
-44 c0 -5 -2 -10 -4 -10 -3 0 -8 5 -11 10 -3 6 -1 10 4 10 6 0 11 -4 11 -10z
m-3096 -16 c21 -20 20 -30 -4 -54 -33 -33 -70 -19 -70 25 0 42 44 59 74 29z
m3991 -14 c3 -5 1 -10 -4 -10 -6 0 -11 5 -11 10 0 6 2 10 4 10 3 0 8 -4 11
-10z m-48 -26 c6 -17 -74 -16 -80 0 -4 10 5 13 35 12 23 0 43 -6 45 -12z
m-1322 -94 c3 -5 12 -7 19 -4 7 3 17 -3 20 -13 4 -10 2 -19 -4 -21 -8 -3 -7
-8 1 -18 9 -11 8 -14 -4 -14 -8 0 -23 -3 -33 -7 -10 -4 -15 -2 -11 4 7 11 -28
45 -37 36 -3 -4 -6 -1 -6 6 0 8 7 10 21 6 19 -6 21 -4 16 14 -5 21 7 29 18 11z
m1145 -80 c0 -5 -5 -10 -11 -10 -5 0 -7 5 -4 10 3 6 8 10 11 10 2 0 4 -4 4
-10z m-20 -38 c0 -5 -13 -21 -29 -36 -29 -28 -31 -25 -16 22 7 20 45 33 45 14z
m-1110 -30 c-5 -2 -7 -9 -4 -17 4 -9 -1 -13 -12 -11 -23 3 -29 23 -14 41 9 11
15 12 25 2 7 -7 9 -13 5 -15z m130 -22 c0 -5 -2 -10 -4 -10 -3 0 -8 5 -11 10
-3 6 -1 10 4 10 6 0 11 -4 11 -10z m1045 -39 c6 -1 6 -4 -1 -9 -6 -4 -18 -33
-26 -65 -16 -55 -16 -57 3 -68 15 -8 24 -7 37 3 10 8 13 9 9 1 -4 -7 0 -17 10
-23 15 -9 13 -10 -12 -6 -16 2 -38 7 -47 11 -13 5 -18 2 -18 -8 0 -9 9 -19 20
-22 11 -3 20 -12 20 -18 0 -7 4 -6 10 3 8 12 10 11 10 -7 0 -15 -6 -23 -17
-23 -13 0 -14 -3 -5 -12 7 -7 13 -21 13 -33 1 -16 2 -17 6 -2 5 18 23 24 23 8
0 -5 14 -8 31 -6 31 4 31 4 26 -31 -4 -25 -3 -33 6 -28 7 4 9 3 4 -1 -15 -17
-44 -14 -65 5 -25 24 -60 26 -68 5 -4 -8 -10 -12 -15 -9 -5 3 -7 10 -4 15 3 5
-1 6 -9 3 -9 -3 -13 -10 -10 -15 3 -5 -2 -6 -10 -3 -9 3 -16 2 -16 -4 0 -16
41 -22 64 -9 12 6 27 10 35 8 8 -1 10 2 5 10 -4 8 -3 10 5 5 6 -4 8 -12 5 -18
-5 -7 -2 -9 8 -6 8 4 15 0 15 -7 0 -10 -5 -11 -19 -4 -12 6 -25 6 -38 -1 -23
-12 -27 -25 -5 -16 9 3 15 0 15 -10 0 -9 5 -12 13 -8 7 4 7 2 -2 -7 -9 -10
-15 -11 -18 -3 -4 12 -38 8 -58 -6 -5 -4 -21 -1 -35 6 -14 8 -19 14 -12 14 6
0 12 4 12 9 0 7 -62 24 -130 34 -14 2 -27 11 -65 45 -11 10 -19 10 -36 1 -17
-9 -20 -8 -14 2 6 8 4 11 -7 7 -11 -5 -14 0 -10 20 4 21 2 24 -12 19 -10 -4
-15 -3 -11 3 3 6 1 10 -4 10 -6 0 -11 -4 -11 -10 0 -5 -4 -10 -10 -10 -5 0 -7
7 -4 15 5 11 -1 15 -25 15 -18 0 -31 5 -31 13 0 12 -26 17 -87 17 -23 0 -33 5
-33 15 0 8 -7 15 -16 15 -8 0 -12 5 -9 10 3 6 2 10 -3 10 -5 0 -12 -9 -15 -20
-4 -14 -10 -18 -22 -13 -15 5 -16 8 -4 17 17 14 24 46 9 46 -6 0 -8 5 -5 10 4
6 11 7 17 4 6 -4 8 -2 5 4 -4 5 -17 8 -30 5 -22 -6 -22 -6 -2 14 11 11 22 17
25 13 8 -11 38 -19 44 -12 7 6 39 12 71 13 11 0 27 7 36 15 16 14 18 14 24 -5
3 -12 4 -25 1 -30 -3 -5 3 -7 13 -4 13 3 18 11 14 21 -4 15 -3 14 10 -1 13
-16 15 -16 21 -1 3 9 3 20 0 26 -4 6 -1 8 7 6 8 -3 13 -18 13 -36 -2 -28 0
-30 13 -16 9 8 22 13 29 10 8 -3 14 0 15 7 0 7 4 3 9 -8 8 -19 9 -19 9 3 1 19
7 22 38 22 28 0 34 -3 26 -11 -9 -9 -8 -15 2 -25 17 -18 25 -18 25 0 0 8 11
17 25 20 14 4 24 12 22 19 -1 7 8 11 21 11 12 -1 22 3 22 7 0 5 -8 9 -17 9
-13 0 -14 3 -6 11 15 15 47 3 40 -15 -4 -10 0 -12 14 -9 11 3 18 11 16 17 -6
17 25 35 53 31 14 -1 30 -3 35 -4z m-1180 -20 c-3 -6 -11 -11 -17 -11 -6 0 -6
6 2 15 14 17 26 13 15 -4z m295 -4 c0 -7 -12 -13 -27 -15 l-28 -1 25 14 c31
18 30 18 30 2z m-289 -30 c-10 -9 -11 -8 -5 6 3 10 9 15 12 12 3 -3 0 -11 -7
-18z m34 -7 c3 -5 1 -10 -4 -10 -6 0 -11 5 -11 10 0 6 2 10 4 10 3 0 8 -4 11
-10z m6059 -46 c3 -8 2 -12 -4 -9 -6 3 -10 10 -10 16 0 14 7 11 14 -7z m-8684
-4 c0 -5 -4 -10 -10 -10 -5 0 -10 5 -10 10 0 6 5 10 10 10 6 0 10 -4 10 -10z
m3065 0 c-3 -6 1 -13 9 -16 30 -12 16 -21 -29 -18 -24 1 -52 7 -62 13 -14 9
-9 10 23 5 32 -5 42 -3 47 10 4 9 9 16 12 16 4 0 3 -5 0 -10z m-305 -10 c0 -5
-2 -10 -4 -10 -3 0 -8 5 -11 10 -3 6 -1 10 4 10 6 0 11 -4 11 -10z m197 -12
c13 -12 23 -26 23 -32 0 -5 -7 -1 -15 10 -8 11 -15 14 -15 7 0 -7 -5 -13 -11
-13 -6 0 -8 9 -4 20 4 11 2 20 -4 20 -6 0 -11 -5 -11 -12 0 -6 -3 -9 -6 -5 -7
6 4 27 13 27 4 0 17 -10 30 -22z m-366 -11 c-13 -13 -26 -3 -16 12 3 6 11 8
17 5 6 -4 6 -10 -1 -17z m39 19 c0 -3 -4 -8 -10 -11 -5 -3 -10 -1 -10 4 0 6 5
11 10 11 6 0 10 -2 10 -4z m249 -9 c6 -8 8 -17 3 -21 -4 -4 1 -12 11 -17 9 -6
17 -14 17 -20 0 -12 -35 21 -44 41 -3 8 -4 2 -1 -14 5 -23 3 -27 -9 -23 -9 4
-16 2 -16 -3 0 -18 -18 -10 -23 10 -3 11 -1 18 4 14 16 -10 9 9 -8 22 -17 12
-16 13 4 14 12 0 24 -6 26 -12 3 -8 6 -6 6 5 1 20 14 22 30 4z m5824 -13 c-3
-8 -13 -14 -22 -14 -10 0 -18 6 -18 14 0 7 10 14 23 14 15 0 21 -5 17 -14z
m-5898 -42 c-3 -3 -11 0 -18 7 -9 10 -8 11 6 5 10 -3 15 -9 12 -12z m261 3 c2
-5 -6 -21 -17 -35 -20 -24 -20 -18 -3 24 3 9 -2 16 -13 19 -12 4 -10 5 6 4 14
-1 26 -6 27 -12z m-50 -21 c8 -33 -3 -46 -27 -34 -15 8 -17 15 -9 29 5 10 7
20 5 23 -3 3 2 5 10 5 9 0 18 -11 21 -23z m-71 -4 c-10 -11 -21 -18 -23 -15
-3 3 3 12 14 20 27 20 30 18 9 -5z m161 -68 c-3 -3 -6 0 -6 6 0 7 -6 12 -14
12 -9 0 -12 7 -9 21 6 21 7 21 20 -6 8 -15 12 -29 9 -33z m826 34 c4 -6 1 -12
-7 -14 -9 -2 -13 -8 -10 -13 4 -5 3 -9 0 -9 -9 0 -44 42 -45 53 0 11 54 -4 62
-17z m-702 -6 c0 -5 -2 -10 -4 -10 -3 0 -8 5 -11 10 -3 6 -1 10 4 10 6 0 11
-4 11 -10z m-1128 -1044 c16 -36 5 -58 -24 -47 -26 9 -37 49 -16 62 21 14 28
11 40 -15z m1299 -147 c9 -17 8 -23 -2 -30 -32 -20 -59 2 -45 36 8 22 33 18
47 -6z m562 -717 c13 -14 16 -38 7 -62 -1 -3 -2 -8 -1 -12 0 -5 -6 -8 -14 -8
-8 0 -24 -9 -34 -19 -13 -13 -27 -17 -41 -14 -21 6 -22 19 -4 67 5 12 2 15
-10 10 -27 -10 -18 20 12 38 36 22 65 22 85 0z m25 -104 c-19 -28 -36 -34 -34
-11 1 15 13 23 45 32 2 1 -3 -9 -11 -21z m22 -32 c0 -3 -4 -8 -10 -11 -5 -3
-10 -1 -10 4 0 6 5 11 10 11 6 0 10 -2 10 -4z m720 -56 c0 -5 -5 -10 -11 -10
-6 0 -7 -5 -2 -12 13 -21 12 -36 -2 -48 -11 -9 -16 -5 -23 22 -5 18 -7 39 -4
46 5 14 42 16 42 2z m614 -44 c10 -39 -2 -56 -39 -56 -28 0 -35 5 -44 31 -14
40 -15 37 12 42 53 10 65 7 71 -17z"/>
<path d="M5106 9961 c-4 -7 -5 -15 -2 -18 9 -9 19 4 14 18 -4 11 -6 11 -12 0z"/>
<path d="M3740 9939 c0 -5 5 -7 10 -4 6 3 10 8 10 11 0 2 -4 4 -10 4 -5 0 -10
-5 -10 -11z"/>
<path d="M5010 9919 c0 -5 -6 -7 -12 -3 -10 5 -10 4 -1 -6 10 -11 15 -11 29 1
16 13 16 12 5 -9 -7 -13 -10 -26 -7 -30 9 -9 34 30 29 45 -6 16 -43 18 -43 2z"/>
<path d="M5065 9904 c0 -12 5 -20 12 -17 6 3 9 12 6 21 -5 12 -2 14 11 9 9 -4
15 -3 11 2 -11 19 -40 8 -40 -15z"/>
<path d="M5176 9914 c-20 -20 -20 -20 4 -20 13 0 20 7 20 18 0 22 -4 22 -24 2z"/>
<path d="M5263 9918 c-26 -13 -30 -28 -7 -28 9 0 12 5 8 11 -4 7 -2 10 5 8 22
-8 7 -24 -20 -24 -15 0 -26 -5 -25 -12 3 -17 16 -29 16 -15 0 7 8 12 18 12 9
0 26 7 36 15 17 13 17 15 3 21 -9 3 -14 10 -11 15 6 11 5 11 -23 -3z"/>
<path d="M5113 9885 c0 -8 4 -15 9 -15 4 0 8 4 8 9 0 6 -4 12 -8 15 -5 3 -9
-1 -9 -9z"/>
<path d="M4177 9876 c-4 -10 -1 -13 8 -9 8 3 12 9 9 14 -7 12 -11 11 -17 -5z"/>
<path d="M4940 9880 c0 -5 -6 -7 -14 -4 -9 4 -14 0 -12 -10 4 -27 13 -27 30
-1 9 14 12 25 6 25 -5 0 -10 -4 -10 -10z"/>
<path d="M5915 9860 c-3 -5 -2 -10 4 -10 5 0 13 5 16 10 3 6 2 10 -4 10 -5 0
-13 -4 -16 -10z"/>
<path d="M5060 9841 c0 -6 4 -12 8 -15 5 -3 9 1 9 9 0 8 -4 15 -9 15 -4 0 -8
-4 -8 -9z"/>
<path d="M4506 9831 c-3 -5 1 -12 10 -15 20 -8 29 -1 19 13 -8 13 -22 14 -29
2z"/>
<path d="M4820 9829 c-11 -8 -12 -12 -2 -16 6 -2 10 -9 6 -14 -3 -5 -1 -9 4
-9 5 0 10 11 10 25 0 14 -1 25 -2 25 0 0 -8 -5 -16 -11z"/>
<path d="M5090 9821 c0 -14 7 -19 25 -17 30 1 34 16 4 16 -11 0 -17 5 -14 10
3 6 1 10 -4 10 -6 0 -11 -9 -11 -19z"/>
<path d="M4918 9823 c7 -3 16 -2 19 1 4 3 -2 6 -13 5 -11 0 -14 -3 -6 -6z"/>
<path d="M4200 9811 c0 -5 5 -13 10 -16 6 -3 10 -2 10 4 0 5 -4 13 -10 16 -5
3 -10 2 -10 -4z"/>
<path d="M4570 9809 c0 -5 5 -7 10 -4 6 3 10 8 10 11 0 2 -4 4 -10 4 -5 0 -10
-5 -10 -11z"/>
<path d="M4970 9810 c0 -5 5 -10 11 -10 5 0 7 5 4 10 -3 6 -8 10 -11 10 -2 0
-4 -4 -4 -10z"/>
<path d="M5555 9810 c-3 -5 -1 -10 4 -10 6 0 11 5 11 10 0 6 -2 10 -4 10 -3 0
-8 -4 -11 -10z"/>
<path d="M4320 9800 c-13 -8 -12 -10 3 -10 9 0 17 5 17 10 0 12 -1 12 -20 0z"/>
<path d="M4608 9803 c7 -3 16 -2 19 1 4 3 -2 6 -13 5 -11 0 -14 -3 -6 -6z"/>
<path d="M4707 9796 c-4 -10 -7 -19 -7 -21 0 -5 23 1 50 14 l25 11 -27 -5
c-16 -3 -28 0 -30 7 -3 7 -7 5 -11 -6z"/>
<path d="M4315 9770 c3 -5 8 -10 11 -10 2 0 4 5 4 10 0 6 -5 10 -11 10 -5 0
-7 -4 -4 -10z"/>
<path d="M4395 9760 c-16 -17 -16 -20 -3 -15 9 4 19 13 22 21 7 19 2 18 -19
-6z"/>
<path d="M4500 9771 c0 -6 4 -13 10 -16 6 -3 7 1 4 9 -7 18 -14 21 -14 7z"/>
<path d="M4530 9770 c0 -6 4 -9 9 -6 5 4 12 1 14 -4 3 -6 4 -5 3 2 -3 15 -26
23 -26 8z"/>
<path d="M4615 9759 c6 -32 13 -34 13 -4 0 14 -4 25 -9 25 -4 0 -6 -10 -4 -21z"/>
<path d="M4845 9770 c-3 -5 -1 -10 4 -10 6 0 11 5 11 10 0 6 -2 10 -4 10 -3 0
-8 -4 -11 -10z"/>
<path d="M4649 9753 c-13 -16 -12 -17 4 -4 16 13 21 21 13 21 -2 0 -10 -8 -17
-17z"/>
<path d="M4345 9750 c4 -6 11 -8 16 -5 14 9 11 15 -7 15 -8 0 -12 -5 -9 -10z"/>
<path d="M6353 9752 c-7 -4 -9 -13 -5 -19 5 -8 13 -9 22 -3 10 6 11 13 5 19
-6 6 -16 7 -22 3z"/>
<path d="M4675 9730 c3 -5 13 -10 21 -10 8 0 12 5 9 10 -3 6 -13 10 -21 10 -8
0 -12 -4 -9 -10z"/>
<path d="M4711 9684 c0 -11 3 -14 6 -6 3 7 2 16 -1 19 -3 4 -6 -2 -5 -13z"/>
<path d="M6810 9681 c0 -6 4 -13 10 -16 6 -3 7 1 4 9 -7 18 -14 21 -14 7z"/>
<path d="M6865 9670 c3 -5 11 -10 16 -10 6 0 7 5 4 10 -3 6 -11 10 -16 10 -6
0 -7 -4 -4 -10z"/>
<path d="M6890 9640 c0 -5 4 -10 9 -10 6 0 13 5 16 10 3 6 -1 10 -9 10 -9 0
-16 -4 -16 -10z"/>
<path d="M6930 9618 c0 -29 15 -45 25 -28 3 5 -1 20 -9 32 l-16 22 0 -26z"/>
<path d="M6638 9623 c7 -3 16 -2 19 1 4 3 -2 6 -13 5 -11 0 -14 -3 -6 -6z"/>
<path d="M3141 9574 c0 -11 3 -14 6 -6 3 7 2 16 -1 19 -3 4 -6 -2 -5 -13z"/>
<path d="M6935 9560 c3 -5 8 -10 11 -10 2 0 4 5 4 10 0 6 -5 10 -11 10 -5 0
-7 -4 -4 -10z"/>
<path d="M7118 9492 c-25 -5 -22 -16 7 -32 30 -16 35 -12 21 15 -6 12 -19 19
-28 17z"/>
<path d="M7150 9490 c0 -5 5 -10 11 -10 5 0 7 5 4 10 -3 6 -8 10 -11 10 -2 0
-4 -4 -4 -10z"/>
<path d="M3275 9450 c-3 -5 -1 -10 4 -10 6 0 11 5 11 10 0 6 -2 10 -4 10 -3 0
-8 -4 -11 -10z"/>
<path d="M3370 9436 c0 -2 8 -10 18 -17 15 -13 16 -12 3 4 -13 16 -21 21 -21
13z"/>
<path d="M3160 9420 c0 -4 9 -10 20 -13 11 -3 20 -2 20 3 0 4 -9 10 -20 13
-11 3 -20 2 -20 -3z"/>
<path d="M3160 9393 c0 -5 5 -15 10 -23 8 -12 10 -11 10 8 0 12 -4 22 -10 22
-5 0 -10 -3 -10 -7z"/>
<path d="M7100 9389 c0 -5 5 -7 10 -4 6 3 10 8 10 11 0 2 -4 4 -10 4 -5 0 -10
-5 -10 -11z"/>
<path d="M7158 9223 c7 -3 16 -2 19 1 4 3 -2 6 -13 5 -11 0 -14 -3 -6 -6z"/>
<path d="M7090 9185 c-8 -9 -8 -15 -2 -15 12 0 26 19 19 26 -2 2 -10 -2 -17
-11z"/>
<path d="M2729 9173 c-13 -16 -12 -17 4 -4 16 13 21 21 13 21 -2 0 -10 -8 -17
-17z"/>
<path d="M7145 9160 c-3 -5 1 -10 9 -10 9 0 16 5 16 10 0 6 -4 10 -9 10 -6 0
-13 -4 -16 -10z"/>
<path d="M7110 9150 c0 -5 5 -10 11 -10 5 0 7 5 4 10 -3 6 -8 10 -11 10 -2 0
-4 -4 -4 -10z"/>
<path d="M2670 9137 c0 -7 11 -13 25 -13 22 -2 38 15 18 17 -5 0 -16 2 -25 4
-10 2 -18 -2 -18 -8z"/>
<path d="M7257 9143 c-13 -12 -7 -19 17 -19 15 0 22 5 19 13 -5 14 -25 17 -36
6z"/>
<path d="M7142 9109 c-2 -19 2 -28 8 -24 5 3 10 13 10 21 0 8 5 12 10 9 6 -3
10 -4 10 -1 0 3 -8 10 -18 15 -15 8 -18 5 -20 -20z"/>
<path d="M7200 9126 c0 -9 5 -16 10 -16 6 0 10 4 10 9 0 6 -4 13 -10 16 -5 3
-10 -1 -10 -9z"/>
<path d="M2830 9091 c0 -6 4 -12 8 -15 5 -3 9 1 9 9 0 8 -4 15 -9 15 -4 0 -8
-4 -8 -9z"/>
<path d="M7185 9090 c-3 -5 -1 -10 4 -10 6 0 11 5 11 10 0 6 -2 10 -4 10 -3 0
-8 -4 -11 -10z"/>
<path d="M7034 9065 c8 -8 20 -15 27 -15 7 0 4 6 -7 15 -25 19 -40 19 -20 0z"/>
<path d="M7160 9076 c0 -2 8 -10 18 -17 15 -13 16 -12 3 4 -13 16 -21 21 -21
13z"/>
<path d="M7005 9039 c-11 -17 1 -21 15 -4 8 9 8 15 2 15 -6 0 -14 -5 -17 -11z"/>
<path d="M7090 9039 c0 -4 7 -9 15 -13 9 -3 15 0 15 8 0 7 -7 13 -15 13 -8 0
-15 -4 -15 -8z"/>
<path d="M7034 9006 c5 -13 2 -17 -9 -13 -8 4 -17 2 -20 -2 -3 -5 9 -8 25 -7
17 1 30 -2 30 -8 0 -5 3 -7 6 -3 3 3 1 14 -5 24 -6 10 -11 14 -11 8 0 -5 -5
-3 -11 5 -9 12 -10 12 -5 -4z"/>
<path d="M2495 8970 c3 -5 8 -10 11 -10 2 0 4 5 4 10 0 6 -5 10 -11 10 -5 0
-7 -4 -4 -10z"/>
<path d="M7080 8946 c0 -9 5 -16 10 -16 6 0 10 4 10 9 0 6 -4 13 -10 16 -5 3
-10 -1 -10 -9z"/>
<path d="M2656 8879 c4 -8 0 -9 -15 -4 -12 4 -21 2 -21 -4 0 -6 -8 -11 -17
-11 -15 0 -16 2 -3 10 8 5 10 10 4 10 -6 0 -17 -7 -24 -15 -7 -8 -16 -12 -21
-9 -5 3 -9 -6 -9 -20 0 -14 -4 -27 -9 -30 -4 -3 -6 6 -3 19 2 15 0 25 -7 25
-6 0 -11 -7 -11 -15 0 -9 -6 -12 -15 -9 -12 5 -13 2 -6 -17 4 -13 15 -24 22
-24 20 -1 39 -14 38 -28 0 -9 -2 -9 -6 1 -2 6 -13 12 -23 12 -10 0 -22 5 -25
10 -3 6 -16 10 -28 10 l-21 0 21 -15 c24 -17 21 -50 -3 -41 -8 3 -14 2 -14 -2
0 -10 43 -37 54 -34 5 2 3 -4 -4 -13 -11 -13 -10 -14 5 -9 12 5 16 4 12 -3
-10 -16 34 -4 56 15 16 14 17 13 17 -9 1 -22 2 -23 14 -6 7 9 25 17 40 17 17
0 26 5 26 16 0 14 -3 14 -15 4 -9 -7 -19 -10 -22 -6 -4 4 -3 10 2 14 15 10 17
54 6 85 -7 19 -7 27 0 27 6 0 7 5 4 10 -4 6 -11 8 -16 5 -5 -4 -9 -1 -9 4 0 6
9 11 20 11 11 0 20 7 20 15 0 8 -5 15 -11 15 -5 0 -7 -5 -3 -11z m-36 -43 c0
-3 -4 -8 -10 -11 -5 -3 -10 -1 -10 4 0 6 5 11 10 11 6 0 10 -2 10 -4z m-30
-56 c0 -5 -5 -10 -11 -10 -5 0 -7 5 -4 10 3 6 8 10 11 10 2 0 4 -4 4 -10z
m-55 -59 c-8 -14 -45 -14 -45 0 0 6 9 9 20 6 11 -3 20 0 20 6 0 6 3 8 6 4 3
-3 3 -10 -1 -16z"/>
<path d="M2462 8855 c10 -22 13 -24 26 -11 17 17 8 36 -18 36 -17 0 -18 -3 -8
-25z"/>
<path d="M2385 8829 c-4 -5 -12 -8 -19 -6 -6 2 -12 -6 -12 -19 -1 -15 3 -21
12 -17 8 3 14 0 14 -7 0 -6 5 -8 11 -4 8 5 10 -1 7 -20 -5 -26 1 -31 31 -26
12 1 12 -1 3 -13 -14 -16 -6 -28 13 -21 14 6 8 44 -7 44 -6 0 -7 7 -4 15 4 11
-3 19 -21 26 -22 8 -24 12 -13 19 13 9 13 10 0 10 -12 0 -12 2 -1 9 8 5 9 11
3 15 -6 3 -14 1 -17 -5z"/>
<path d="M2433 8825 c-7 -8 -13 -16 -13 -19 0 -2 6 -6 13 -9 7 -3 13 5 13 19
1 13 1 24 0 24 0 -1 -7 -7 -13 -15z"/>
<path d="M2115 8750 c3 -5 8 -10 11 -10 2 0 4 5 4 10 0 6 -5 10 -11 10 -5 0
-7 -4 -4 -10z"/>
<path d="M2193 8735 c0 -8 4 -12 9 -9 4 3 8 9 8 15 0 5 -4 9 -8 9 -5 0 -9 -7
-9 -15z"/>
<path d="M2251 8704 c10 -13 10 -17 -2 -25 -8 -5 -9 -9 -3 -9 21 0 33 22 19
36 -19 19 -30 18 -14 -2z"/>
<path d="M2460 8674 c0 -9 -5 -12 -12 -8 -9 5 -9 3 1 -9 7 -9 17 -14 22 -11 5
3 9 0 9 -6 0 -6 5 -8 11 -4 8 5 7 10 -4 16 -9 5 -14 15 -11 23 4 8 1 15 -5 15
-6 0 -11 -7 -11 -16z"/>
<path d="M2390 8636 c0 -2 7 -7 16 -10 8 -3 12 -2 9 4 -6 10 -25 14 -25 6z"/>
<path d="M2433 8615 c0 -7 6 -11 14 -8 7 3 13 6 13 8 0 2 -6 5 -13 8 -8 3 -14
-1 -14 -8z"/>
<path d="M2345 8610 c4 -6 11 -8 16 -5 14 9 11 15 -7 15 -8 0 -12 -5 -9 -10z"/>
<path d="M2388 8612 c7 -5 10 -16 6 -28 -6 -15 -4 -17 6 -7 15 14 7 43 -12 43
-11 0 -11 -2 0 -8z"/>
<path d="M2216 8574 c-4 -10 -14 -14 -25 -11 -14 3 -18 1 -14 -9 6 -17 19 -18
29 -3 4 8 11 4 19 -11 10 -19 13 -20 18 -6 4 10 3 15 -3 11 -10 -6 -14 7 -11
33 3 17 -6 15 -13 -4z"/>
<path d="M2276 8545 c-3 -9 -2 -13 4 -10 6 3 10 1 10 -4 0 -17 17 -13 24 6 4
10 4 14 0 10 -4 -4 -13 -2 -19 3 -9 8 -14 6 -19 -5z"/>
<path d="M2166 8504 c-9 -24 -7 -28 9 -14 17 14 20 30 6 30 -5 0 -12 -7 -15
-16z"/>
<path d="M2195 8430 c-16 -11 -25 -20 -19 -20 11 0 64 39 54 40 -3 0 -18 -9
-35 -20z"/>
<path d="M7305 8390 c3 -5 8 -10 11 -10 2 0 4 5 4 10 0 6 -5 10 -11 10 -5 0
-7 -4 -4 -10z"/>
<path d="M2130 8370 c0 -5 7 -7 15 -4 8 4 15 8 15 10 0 2 -7 4 -15 4 -8 0 -15
-4 -15 -10z"/>
<path d="M7476 8185 c-9 -14 -13 -25 -9 -25 10 0 36 40 30 46 -2 3 -12 -7 -21
-21z"/>
<path d="M2505 8190 c-16 -7 -17 -9 -3 -9 9 -1 20 4 23 9 7 11 7 11 -20 0z"/>
<path d="M2266 8137 c3 -10 9 -15 12 -12 3 3 0 11 -7 18 -10 9 -11 8 -5 -6z"/>
<path d="M2449 8114 c-12 -14 -11 -16 5 -13 11 2 21 10 24 17 5 17 -13 15 -29
-4z"/>
<path d="M2565 8040 c3 -5 8 -10 11 -10 2 0 4 5 4 10 0 6 -5 10 -11 10 -5 0
-7 -4 -4 -10z"/>
<path d="M2611 7973 c-1 -17 16 -25 25 -12 4 7 3 9 -4 5 -5 -3 -13 0 -15 6 -4
9 -6 10 -6 1z"/>
<path d="M2571 7947 c-8 -10 -7 -14 2 -14 8 0 14 6 14 14 0 7 -1 13 -2 13 -2
0 -8 -6 -14 -13z"/>
<path d="M2425 7940 c-3 -5 -2 -10 4 -10 5 0 13 5 16 10 3 6 2 10 -4 10 -5 0
-13 -4 -16 -10z"/>
<path d="M2345 7920 c3 -5 8 -10 11 -10 2 0 4 5 4 10 0 6 -5 10 -11 10 -5 0
-7 -4 -4 -10z"/>
<path d="M1877 7833 c-4 -3 -7 -11 -7 -17 0 -6 5 -5 12 2 6 6 9 14 7 17 -3 3
-9 2 -12 -2z"/>
<path d="M2285 7829 c-4 -6 -5 -12 -2 -15 2 -3 7 2 10 11 7 17 1 20 -8 4z"/>
<path d="M1521 7803 c-1 -17 16 -25 25 -12 4 7 3 9 -4 5 -5 -3 -13 0 -15 6 -4
9 -6 10 -6 1z"/>
<path d="M2100 7767 c0 -7 -9 -23 -20 -35 -23 -25 -25 -33 -6 -26 23 9 29 -15
11 -42 -9 -14 -15 -27 -13 -29 6 -6 55 54 49 60 -3 3 3 3 14 -1 11 -5 14 -9 7
-12 -19 -6 -14 -22 8 -22 11 0 20 4 20 8 0 17 -43 47 -64 44 -19 -2 -19 -1 -3
8 18 12 24 60 7 60 -5 0 -10 -6 -10 -13z"/>
<path d="M1760 7660 c0 -7 -7 -9 -16 -6 -14 5 -15 4 -4 -9 13 -16 35 -21 26
-6 -4 5 -1 11 6 13 9 3 9 6 0 12 -7 4 -12 2 -12 -4z"/>
<path d="M2115 7640 c-3 -5 -1 -10 4 -10 6 0 11 5 11 10 0 6 -2 10 -4 10 -3 0
-8 -4 -11 -10z"/>
<path d="M1721 7604 c0 -11 3 -14 6 -6 3 7 2 16 -1 19 -3 4 -6 -2 -5 -13z"/>
<path d="M2140 7597 c0 -8 7 -14 15 -14 11 0 12 4 4 14 -6 7 -13 13 -15 13 -2
0 -4 -6 -4 -13z"/>
<path d="M1712 7534 c10 -10 20 -16 22 -13 3 3 -5 11 -17 18 -21 13 -21 12 -5
-5z"/>
<path d="M2150 7509 c0 -5 5 -7 10 -4 6 3 10 8 10 11 0 2 -4 4 -10 4 -5 0 -10
-5 -10 -11z"/>
<path d="M7625 7490 c-3 -5 -1 -10 4 -10 6 0 11 5 11 10 0 6 -2 10 -4 10 -3 0
-8 -4 -11 -10z"/>
<path d="M1570 7429 c0 -5 5 -7 10 -4 6 3 10 8 10 11 0 2 -4 4 -10 4 -5 0 -10
-5 -10 -11z"/>
<path d="M1598 7413 c6 -2 18 -2 25 0 6 3 1 5 -13 5 -14 0 -19 -2 -12 -5z"/>
<path d="M1680 7412 c0 -5 -21 -13 -47 -18 -37 -7 -47 -13 -48 -30 -1 -12 7
-27 17 -33 12 -7 18 -8 18 -1 0 6 11 3 24 -6 16 -10 23 -21 19 -31 -5 -13 -2
-15 11 -10 10 4 15 3 11 -3 -3 -6 -14 -10 -23 -11 -14 0 -13 -3 6 -16 22 -16
30 -43 12 -43 -5 0 -7 -7 -4 -15 6 -14 8 -13 19 1 8 11 17 14 26 8 19 -11 40
-14 34 -4 -2 4 5 16 16 26 20 18 20 19 2 32 -17 13 -16 14 6 7 21 -7 23 -5 18
17 -5 18 -2 25 8 25 9 0 15 -10 16 -26 1 -26 1 -25 10 3 10 35 8 38 -24 40
-14 0 -23 4 -20 9 2 4 -3 7 -12 7 -9 0 -14 3 -12 8 3 4 -1 13 -9 20 -18 16
-18 8 0 -27 14 -26 13 -27 -6 -26 -11 1 -25 10 -30 20 -8 13 -7 16 1 11 6 -4
11 -1 11 7 0 10 -11 14 -40 13 -22 0 -40 -4 -40 -8 0 -5 -4 -8 -10 -8 -5 0
-10 6 -10 14 0 9 12 13 38 12 31 -1 37 3 40 22 2 15 -2 22 -12 22 -9 0 -16 -4
-16 -8z"/>
<path d="M1180 7380 c0 -5 5 -10 11 -10 5 0 7 5 4 10 -3 6 -8 10 -11 10 -2 0
-4 -4 -4 -10z"/>
<path d="M1807 7363 c5 -12 3 -14 -7 -8 -9 5 -11 4 -6 -3 10 -16 14 -15 26 8
8 16 8 20 -4 20 -10 0 -13 -6 -9 -17z"/>
<path d="M1945 7360 c-3 -5 -1 -10 4 -10 6 0 11 5 11 10 0 6 -2 10 -4 10 -3 0
-8 -4 -11 -10z"/>
<path d="M1105 7332 c3 -3 0 -11 -6 -19 -9 -10 -8 -13 4 -13 8 0 17 8 19 18 3
11 0 19 -8 19 -8 0 -12 -3 -9 -5z"/>
<path d="M1038 7309 c-10 -10 -19 -22 -20 -26 -2 -5 -6 -7 -10 -6 -5 2 -6 -13
-3 -33 4 -35 4 -36 -14 -20 -17 16 -18 15 -17 -11 1 -19 -4 -28 -14 -28 -21
-1 -40 -14 -40 -28 0 -6 7 -2 16 9 8 10 12 13 8 5 -3 -7 -1 -17 5 -21 7 -4 13
-17 14 -28 1 -21 18 -28 55 -23 6 1 12 -5 12 -13 0 -9 7 -12 18 -10 12 4 17
15 17 42 0 20 4 47 9 59 6 16 4 26 -8 39 -9 9 -14 19 -11 22 3 4 10 0 16 -8 7
-11 8 -8 5 12 -3 19 0 28 12 31 12 3 10 5 -5 6 -13 0 -23 -5 -24 -11 0 -7 -4
-4 -9 7 -5 13 -3 26 8 38 21 23 1 20 -20 -4z"/>
<path d="M1592 7294 c-18 -20 -6 -34 26 -33 24 0 25 1 7 9 -19 8 -19 9 -1 9
15 1 16 4 6 16 -15 18 -21 18 -38 -1z"/>
<path d="M1548 7283 c7 -3 16 -2 19 1 4 3 -2 6 -13 5 -11 0 -14 -3 -6 -6z"/>
<path d="M1486 7273 c15 -11 25 -43 14 -43 -6 0 -10 -9 -10 -20 0 -12 7 -20
18 -20 11 0 13 3 5 8 -7 5 -9 13 -3 21 4 8 6 21 2 29 -4 12 -1 14 14 8 15 -6
16 -5 7 5 -7 7 -23 14 -35 16 -13 2 -18 0 -12 -4z"/>
<path d="M886 7236 c3 -8 -2 -16 -10 -19 -13 -4 -13 -5 1 -3 19 1 32 36 14 36
-6 0 -8 -6 -5 -14z"/>
<path d="M1625 7224 c0 -12 3 -20 8 -17 4 2 7 -3 7 -11 0 -8 -4 -17 -10 -21
-12 -7 -44 41 -35 55 3 5 2 10 -3 10 -6 0 -12 -7 -16 -15 -3 -8 -1 -15 4 -15
6 0 10 -5 10 -11 0 -6 -6 -9 -14 -6 -15 6 -36 -11 -36 -30 0 -7 6 -10 14 -7 8
3 12 13 9 22 -4 15 -3 15 6 2 9 -13 12 -13 20 -1 7 11 12 9 22 -10 11 -22 11
-23 -4 -10 -14 11 -17 11 -17 0 0 -24 16 -43 25 -30 5 9 10 9 21 0 12 -10 13
-8 5 13 -5 14 -6 29 -2 34 5 5 11 21 15 35 4 20 2 28 -12 31 -12 4 -17 -1 -17
-18z"/>
<path d="M918 7233 c7 -3 16 -2 19 1 4 3 -2 6 -13 5 -11 0 -14 -3 -6 -6z"/>
<path d="M1545 7231 c-3 -5 -2 -12 3 -15 5 -3 9 1 9 9 0 17 -3 19 -12 6z"/>
<path d="M1658 7170 c-7 -24 -3 -38 8 -28 3 4 4 17 2 30 l-3 23 -7 -25z"/>
<path d="M1456 7165 c4 -8 8 -15 10 -15 2 0 4 7 4 15 0 8 -4 15 -10 15 -5 0
-7 -7 -4 -15z"/>
<path d="M5535 7160 c-3 -5 1 -13 9 -16 22 -8 20 -47 -5 -97 l-20 -42 38 45
c21 25 48 55 61 68 12 13 22 25 22 27 0 2 -15 6 -32 10 -18 4 -40 9 -50 11 -9
3 -19 0 -23 -6z"/>
<path d="M1554 7145 c-15 -7 -19 -16 -14 -30 9 -23 3 -38 -11 -30 -5 4 -9 1
-9 -4 0 -23 26 -9 44 23 22 41 18 56 -10 41z"/>
<path d="M1717 7137 c3 -5 -3 -6 -14 -3 -12 4 -25 1 -32 -8 -10 -12 -8 -14 11
-12 14 1 35 10 48 19 22 15 22 16 2 14 -11 0 -18 -5 -15 -10z"/>
<path d="M1495 7131 c-3 -5 -1 -12 5 -16 5 -3 10 1 10 9 0 18 -6 21 -15 7z"/>
<path d="M1450 7114 c0 -20 27 -37 36 -23 4 7 3 9 -4 5 -6 -3 -15 2 -21 11 -6
10 -11 13 -11 7z"/>
<path d="M1606 7093 c-6 -14 -5 -15 5 -6 7 7 10 15 7 18 -3 3 -9 -2 -12 -12z"/>
<path d="M716 7081 c-4 -5 3 -7 14 -4 23 6 26 13 6 13 -8 0 -17 -4 -20 -9z"/>
<path d="M930 7083 c16 -6 30 -23 30 -36 0 -5 -4 -6 -9 -2 -5 3 -22 -6 -37
-20 -24 -22 -26 -28 -13 -40 8 -9 23 -12 37 -9 23 7 30 23 10 25 -7 0 1 7 17
14 17 7 33 11 36 9 8 -4 21 57 15 64 -3 2 -8 -7 -12 -22 -8 -33 -32 -34 -40
-1 -4 17 -13 25 -28 24 -14 0 -16 -2 -6 -6z"/>
<path d="M977 7083 c-10 -9 -9 -23 2 -23 5 0 11 7 15 15 5 15 -5 20 -17 8z"/>
<path d="M1481 7066 c-9 -10 -8 -15 2 -19 8 -3 13 3 13 14 0 23 0 23 -15 5z"/>
<path d="M1675 7050 c-3 -5 1 -10 9 -10 9 0 16 5 16 10 0 6 -4 10 -9 10 -6 0
-13 -4 -16 -10z"/>
<path d="M985 6990 c-3 -5 -1 -10 4 -10 6 0 11 5 11 10 0 6 -2 10 -4 10 -3 0
-8 -4 -11 -10z"/>
<path d="M1410 6990 c0 -5 5 -10 10 -10 6 0 10 5 10 10 0 6 -4 10 -10 10 -5 0
-10 -4 -10 -10z"/>
<path d="M1366 6961 c-4 -5 3 -7 14 -4 23 6 26 13 6 13 -8 0 -17 -4 -20 -9z"/>
<path d="M900 6936 c0 -8 4 -17 9 -20 5 -4 7 3 4 14 -6 23 -13 26 -13 6z"/>
<path d="M863 6930 c-29 -12 -29 -15 2 -15 14 0 25 6 25 13 0 6 -1 12 -2 11
-2 0 -13 -4 -25 -9z"/>
<path d="M1346 6921 c-4 -5 3 -7 14 -4 23 6 26 13 6 13 -8 0 -17 -4 -20 -9z"/>
<path d="M868 6893 c6 -2 18 -2 25 0 6 3 1 5 -13 5 -14 0 -19 -2 -12 -5z"/>
<path d="M1445 6869 c-4 -6 -5 -12 -2 -15 2 -3 7 2 10 11 7 17 1 20 -8 4z"/>
<path d="M865 6861 c-3 -5 -1 -12 4 -15 5 -3 11 1 15 9 6 16 -9 21 -19 6z"/>
<path d="M653 6830 c-1 -11 2 -22 6 -24 4 -3 7 4 6 14 -2 27 -10 33 -12 10z"/>
<path d="M645 6780 c-3 -5 -2 -10 4 -10 5 0 13 5 16 10 3 6 2 10 -4 10 -5 0
-13 -4 -16 -10z"/>
<path d="M1211 6737 c-8 -10 -7 -14 4 -14 8 0 15 6 15 14 0 7 -2 13 -4 13 -2
0 -9 -6 -15 -13z"/>
<path d="M1421 6581 c0 -8 -8 -23 -18 -33 -21 -23 -10 -36 12 -14 9 9 14 26
12 38 -2 13 -5 17 -6 9z"/>
<path d="M1430 6520 c0 -5 -8 -10 -17 -10 -14 0 -15 -2 -4 -12 10 -10 15 -10
18 -1 2 7 12 9 21 6 15 -6 15 -5 3 10 -15 19 -21 21 -21 7z"/>
<path d="M7170 6492 c0 -7 -4 -11 -9 -7 -6 3 -8 -4 -6 -16 6 -31 9 -32 34 -10
13 12 18 22 11 26 -5 3 -10 3 -10 -2 0 -4 -5 -1 -10 7 -7 11 -10 11 -10 2z"/>
<path d="M7220 6470 c0 -5 5 -10 11 -10 5 0 7 5 4 10 -3 6 -8 10 -11 10 -2 0
-4 -4 -4 -10z"/>
<path d="M630 6461 c0 -5 5 -13 10 -16 6 -3 10 -2 10 4 0 5 -4 13 -10 16 -5 3
-10 2 -10 -4z"/>
<path d="M1522 6445 c0 -16 2 -22 5 -12 2 9 2 23 0 30 -3 6 -5 -1 -5 -18z"/>
<path d="M7228 6428 c3 -13 10 -17 23 -13 11 4 19 2 19 -5 0 -6 -4 -9 -9 -6
-5 3 -11 -1 -14 -9 -7 -16 20 -9 41 12 13 13 12 14 -8 17 -6 0 -14 6 -18 12
-12 19 -40 13 -34 -8z"/>
<path d="M1250 6300 c0 -5 5 -10 10 -10 6 0 10 5 10 10 0 6 -4 10 -10 10 -5 0
-10 -4 -10 -10z"/>
<path d="M640 6140 c0 -5 5 -10 11 -10 5 0 7 5 4 10 -3 6 -8 10 -11 10 -2 0
-4 -4 -4 -10z"/>
<path d="M861 6074 c0 -11 3 -14 6 -6 3 7 2 16 -1 19 -3 4 -6 -2 -5 -13z"/>
<path d="M911 6064 c0 -11 3 -14 6 -6 3 7 2 16 -1 19 -3 4 -6 -2 -5 -13z"/>
<path d="M1199 5998 c-1 -7 -1 -19 0 -26 1 -7 -5 -15 -13 -18 -11 -4 -13 -11
-7 -22 11 -22 7 -82 -5 -90 -6 -4 -13 -15 -17 -25 -4 -11 -12 -15 -19 -11 -10
6 -10 4 -3 -7 15 -20 12 -48 -5 -59 -13 -9 -13 -10 1 -10 8 0 20 5 27 12 9 9
12 7 12 -11 0 -12 -4 -19 -10 -16 -15 9 -32 -4 -23 -18 10 -17 12 -77 1 -77
-4 0 -8 9 -8 20 0 11 -4 20 -8 20 -10 0 -14 -40 -4 -40 4 0 18 -10 32 -21 14
-11 19 -18 11 -14 -7 4 -18 1 -23 -6 -8 -11 -9 -10 -4 3 3 12 1 15 -10 11 -13
-5 -11 -10 9 -32 14 -14 30 -37 36 -51 l12 -25 -19 22 c-20 23 -40 20 -21 -4
6 -7 8 -13 3 -13 -5 0 -3 -4 4 -8 15 -10 24 -72 13 -90 -12 -19 -1 -62 15 -62
8 0 13 -3 13 -7 -1 -5 0 -11 1 -15 1 -5 3 -13 4 -20 0 -6 8 -12 16 -14 8 -1
22 -5 31 -9 19 -7 37 13 22 24 -17 10 -25 49 -12 57 8 4 9 3 5 -5 -4 -6 -1
-14 7 -17 19 -7 28 -39 15 -52 -13 -13 -3 -42 13 -42 8 0 8 4 -1 15 -8 10 -9
15 -2 15 6 0 16 -8 22 -17 10 -16 11 -16 7 3 -3 16 0 21 12 19 9 -1 15 -8 13
-15 -1 -6 2 -8 9 -4 7 4 18 -1 26 -11 11 -16 13 -16 13 -3 0 9 3 18 8 21 4 2
2 2 -5 1 -6 -2 -17 4 -24 12 -10 12 -5 13 32 9 42 -6 43 -5 24 10 -11 9 -14
14 -7 10 8 -4 12 4 12 29 0 20 -5 36 -11 36 -5 0 -8 -4 -4 -9 3 -5 0 -13 -6
-17 -8 -5 -10 0 -6 17 3 13 2 31 -3 39 -5 9 -5 19 2 27 6 8 8 16 4 20 -3 3 -6
1 -6 -5 0 -7 -4 -12 -10 -12 -5 0 -7 7 -4 15 5 13 -5 19 -27 17 -10 -2 -21 47
-14 58 4 6 1 10 -4 10 -6 0 -11 9 -11 19 0 11 -5 23 -12 27 -8 5 -9 2 -5 -9 3
-10 2 -17 -2 -17 -21 0 -18 29 5 49 13 11 24 26 24 33 0 6 -3 8 -6 5 -13 -12
-44 14 -44 36 0 13 -6 29 -12 36 -11 10 -9 11 5 5 14 -5 18 -2 15 12 -2 11 4
20 15 22 9 2 17 -1 17 -7 0 -6 -8 -7 -17 -4 -15 6 -16 5 -3 -9 13 -13 16 -13
29 -1 12 13 12 16 0 24 -8 5 -18 9 -23 9 -4 0 -6 7 -2 15 3 8 4 15 3 15 -1 0
-17 4 -35 10 -28 8 -33 7 -28 -6 3 -9 1 -12 -4 -9 -6 3 -10 14 -11 23 0 14 -2
13 -9 -3 -6 -13 -9 -15 -9 -5 0 8 6 24 14 34 13 17 15 17 15 4 0 -24 20 -33
36 -16 18 18 5 31 -39 42 -21 5 -27 4 -21 -5 4 -8 3 -9 -5 -5 -9 6 -9 11 -1
21 8 10 8 14 -1 17 -8 3 -10 11 -6 22 4 10 13 16 22 13 9 -4 12 -1 8 9 -3 9
-14 12 -30 10 -24 -5 -24 -4 -9 20 9 13 12 24 7 24 -6 0 -8 7 -5 15 4 8 3 15
0 15 -3 0 -7 -6 -7 -12z m81 -168 c0 -5 -4 -10 -10 -10 -5 0 -10 5 -10 10 0 6
5 10 10 10 6 0 10 -4 10 -10z m-107 -41 c4 -16 3 -18 -9 -8 -7 6 -11 15 -8 20
8 13 11 11 17 -12z m107 -43 c0 -2 -7 -9 -15 -16 -13 -11 -14 -10 -9 4 5 14
24 23 24 12z m-54 -33 c-4 -4 -12 -1 -19 7 -9 10 -9 11 1 6 7 -4 12 -2 13 6 0
11 2 11 6 0 3 -7 2 -16 -1 -19z m-46 -38 c0 -8 -2 -15 -4 -15 -2 0 -6 7 -10
15 -3 8 -1 15 4 15 6 0 10 -7 10 -15z m100 -68 c0 -2 -10 -12 -22 -23 l-23
-19 19 23 c18 21 26 27 26 19z m-76 -36 c3 -5 0 -13 -7 -19 -10 -8 -13 -6 -13
9 0 20 11 25 20 10z m110 -58 c8 -19 2 -16 -25 13 -23 25 -23 26 -2 13 13 -7
25 -19 27 -26z m-107 -79 c-3 -3 -12 -4 -19 -1 -8 3 -5 6 6 6 11 1 17 -2 13
-5z m103 -58 c0 -7 -7 -19 -15 -26 -13 -11 -15 -8 -15 14 0 16 5 26 15 26 8 0
15 -6 15 -14z"/>
<path d="M830 5960 c0 -5 5 -10 11 -10 5 0 7 5 4 10 -3 6 -8 10 -11 10 -2 0
-4 -4 -4 -10z"/>
<path d="M1245 5890 c3 -5 8 -10 11 -10 2 0 4 5 4 10 0 6 -5 10 -11 10 -5 0
-7 -4 -4 -10z"/>
<path d="M5811 5814 c0 -11 3 -14 6 -6 3 7 2 16 -1 19 -3 4 -6 -2 -5 -13z"/>
<path d="M5885 5790 c4 -6 11 -8 16 -5 14 9 11 15 -7 15 -8 0 -12 -5 -9 -10z"/>
<path d="M1372 5740 c0 -14 2 -19 5 -12 2 6 2 18 0 25 -3 6 -5 1 -5 -13z"/>
<path d="M1309 5690 c-5 -28 -4 -50 2 -50 13 0 20 33 9 44 -5 5 -10 8 -11 6z"/>
<path d="M555 5560 c0 -24 6 -44 14 -49 7 -5 10 -14 7 -20 -14 -23 2 -10 18
14 14 22 15 27 1 42 -8 10 -20 26 -27 36 -11 15 -13 12 -13 -23z m33 -20 c7
-11 10 -20 6 -20 -7 0 -34 27 -34 34 0 13 16 5 28 -14z"/>
<path d="M659 5412 c7 -13 6 -23 -1 -30 -9 -9 -9 -12 -1 -12 7 0 15 5 18 10 8
13 -4 50 -16 50 -6 0 -6 -7 0 -18z"/>
<path d="M1415 5400 c-3 -6 1 -7 9 -4 18 7 21 14 7 14 -6 0 -13 -4 -16 -10z"/>
<path d="M6524 5375 c-10 -8 -14 -15 -8 -15 6 0 17 7 24 15 16 19 9 19 -16 0z"/>
<path d="M742 5308 c2 -12 10 -23 18 -25 12 -4 13 -3 1 5 -8 6 -11 17 -8 26 4
9 2 16 -4 16 -6 0 -9 -10 -7 -22z"/>
<path d="M1182 5250 c0 -14 2 -19 5 -12 2 6 2 18 0 25 -3 6 -5 1 -5 -13z"/>
<path d="M1206 5261 c-8 -12 31 -44 43 -36 6 3 11 12 11 18 0 7 -4 6 -10 -3
-6 -10 -10 -11 -10 -2 0 6 -7 12 -16 12 -8 0 -12 5 -9 10 3 6 4 10 1 10 -3 0
-7 -4 -10 -9z"/>
<path d="M786 5179 c3 -6 1 -15 -6 -19 -7 -4 -8 -10 -3 -13 15 -10 34 9 27 26
-3 9 -10 17 -16 17 -5 0 -6 -5 -2 -11z"/>
<path d="M813 5125 c0 -8 4 -12 9 -9 5 3 6 10 3 15 -9 13 -12 11 -12 -6z"/>
<path d="M4808 4960 c36 -99 68 -157 92 -170 17 -9 20 -8 20 9 0 44 -42 129
-90 182 l-49 54 27 -75z"/>
<path d="M1045 4730 c4 -6 11 -8 16 -5 14 9 11 15 -7 15 -8 0 -12 -5 -9 -10z"/>
<path d="M1328 4203 c7 -3 16 -2 19 1 4 3 -2 6 -13 5 -11 0 -14 -3 -6 -6z"/>
<path d="M1418 4173 c7 -3 16 -2 19 1 4 3 -2 6 -13 5 -11 0 -14 -3 -6 -6z"/>
<path d="M1870 8451 c0 -5 5 -13 10 -16 6 -3 10 -2 10 4 0 5 -4 13 -10 16 -5
3 -10 2 -10 -4z"/>
<path d="M1190 7881 c0 -5 7 -15 17 -22 15 -13 15 -12 4 9 -12 23 -21 28 -21
13z"/>
<path d="M1135 7740 c-3 -5 -2 -10 4 -10 5 0 13 5 16 10 3 6 2 10 -4 10 -5 0
-13 -4 -16 -10z"/>
<path d="M5980 5250 c6 -11 15 -20 21 -20 6 0 8 -4 4 -9 -7 -13 12 -24 26 -15
7 4 0 17 -17 35 -32 33 -50 38 -34 9z"/>
<path d="M6022 5181 c-11 -6 -10 -10 4 -15 20 -8 32 0 18 14 -5 5 -15 5 -22 1z"/>
<path d="M6570 4920 c5 -10 15 -21 22 -23 7 -3 3 -6 -8 -6 -12 -1 -24 -8 -27
-15 -7 -17 12 -11 51 14 22 15 32 38 11 24 -6 -3 -15 -1 -19 7 -5 7 -15 14
-24 15 -12 2 -14 -2 -6 -16z"/>
<path d="M3356 2935 c-3 -8 -1 -15 4 -15 6 0 10 7 10 15 0 8 -2 15 -4 15 -2 0
-6 -7 -10 -15z"/>
<path d="M3820 2909 c0 -5 5 -7 10 -4 6 3 10 8 10 11 0 2 -4 4 -10 4 -5 0 -10
-5 -10 -11z"/>
<path d="M3866 2545 c-3 -9 0 -15 9 -15 16 0 20 16 6 24 -5 3 -11 -1 -15 -9z"/>
<path d="M3665 2530 c-3 -5 -1 -10 4 -10 6 0 11 5 11 10 0 6 -2 10 -4 10 -3 0
-8 -4 -11 -10z"/>
<path d="M3405 2520 c4 -6 11 -8 16 -5 14 9 11 15 -7 15 -8 0 -12 -5 -9 -10z"/>
<path d="M3810 2501 c0 -5 5 -13 10 -16 6 -3 10 -2 10 4 0 5 -4 13 -10 16 -5
3 -10 2 -10 -4z"/>
<path d="M3845 2489 c-5 -16 -13 -20 -31 -16 -13 2 -29 -2 -35 -9 -9 -11 -8
-14 2 -14 11 0 11 -2 0 -9 -12 -8 -9 -11 13 -17 16 -4 32 -2 38 4 7 7 16 8 23
2 7 -6 11 0 13 18 1 21 0 24 -8 12 -8 -13 -10 -13 -10 2 0 9 7 24 16 32 13 14
13 16 0 16 -8 0 -18 -9 -21 -21z m-7 -41 c-6 -17 -38 -19 -38 -2 0 8 9 14 21
14 11 0 19 -5 17 -12z"/>
<path d="M3697 2377 c-3 -7 5 -13 19 -13 29 -2 30 2 5 15 -14 8 -20 7 -24 -2z"/>
<path d="M3940 2351 c0 -7 -4 -9 -10 -6 -5 3 -10 1 -10 -4 0 -6 4 -11 9 -11
13 0 25 20 17 27 -3 4 -6 1 -6 -6z"/>
<path d="M75 6450 c3 -5 8 -10 11 -10 2 0 4 5 4 10 0 6 -5 10 -11 10 -5 0 -7
-4 -4 -10z"/>
<path d="M124 6394 c3 -9 6 -19 6 -22 0 -9 20 21 20 31 0 4 -7 7 -16 7 -11 0
-14 -5 -10 -16z"/>
<path d="M24 6278 c-4 -6 -3 -8 4 -4 5 3 13 0 15 -6 3 -8 6 -6 6 5 1 19 -14
23 -25 5z"/>
<path d="M110 6084 c0 -8 5 -12 10 -9 6 4 8 11 5 16 -9 14 -15 11 -15 -7z"/>
</g>
</svg>
<%
s.TL = "CT";
s.setTLColor();
%>
<div.flex-container>
<h1>The Ship</h1>
<br>
<i>An interactive novel</i>
<i>about reaching out to others</i>
<i>and finding oneself</i>
</div>
<div.flex-container style="margin-top: 3vh; margin-bottom: 3vh">
<%= story.render("LOGO_PT") %>
</div>
<div.flex-container>
[[Begin a new voyage|Save Info]]
<a0#load style="margin: 1vh;">Continue from a bookmark</a>
[[ Credits |Credits]]
<h5>Version: <%= s.GLOBALS.VERSION %>
</div>
<%
$(function () {
$("#load").on("click", function () {
const fileInput = document.createElement("input");
fileInput.type = "file";
fileInput.style.display = "none"; // Hide the file input element
fileInput.accept = ".bookmark";
fileInput.addEventListener("change", function () {
const selectedFile = fileInput.files[0]; // Get the selected file
if (selectedFile) {
const reader = new FileReader();
reader.onload = function (event) {
const fileContent = event.target.result; // The file content as a string
const savehash = fileContent; // Display the file content
if (!story.restore(savehash, restoreCB, "Load"))
alert(
"Could not load your game :(\nDid you upload the correct file?"
);
};
reader.readAsText(selectedFile); // Read the file as text
} else {
console.log("No file selected.");
}
});
// Trigger a click event on the hidden file input element
fileInput.click();
});
});
function restoreCB(s) {
s.remove = window.setup.remove;
s.say = window.setup.say;
s.think = window.setup.think;
s.unlockAch = window.setup.unlockAch;
s.improveRel = window.setup.improveRel;
s.deterRel = window.setup.deterRel;
s.addEntry = window.setup.addEntry;
s.getPILL = window.setup.getPILL;
s.skillLvl2Txt = window.setup.skillLvl2Txt;
s.setTLColor = window.setup.setTLColor;
s.SESSION_STARTED_AT = new Date();
s.setTLColor();
}
%>
<%= s.say("Grace", "Oh, hello Captain. How may I help you?") %>
<%= story.render("Grace/Options") %>
<%= s.say("C", "How did you find my speech, Grace?") %>
<% if (s.LIED === 0) { %>
<%= s.say("Grace", "Well... I liked it a lot, actually. I really appreciate that you told them the truth, Captain. It wouldn’t be fair for them to be blissfully ignorant while we are so uncertain. There is nothing more important than the truth, if you ask me. We are all in this together, after all, and we wouldn’t be here without them.") %>
<%= s.say("C", "Yes, I know. But I’m not sure whether this uncertainty that I communicated to them will be for good or bad.") %>
<%= s.say("Grace", "What matters, Captain, is that now they know. Only time will tell. But if I were you, I would show them trust. One lives and acts best when they know everything there is to know.") %>
<% } else if (s.LIED === 1) { %>
<%= s.say("Grace", "Well... I think you should have let them in all the way. I understand what you are trying to do, I really do. But we wouldn’t be here without them and I feel they really are entitled to the whole truth.") %>
<%= s.say("C", "Entitled. There’s this funny word again.") %>
<%= s.say("Grace", "But think about it, Captain. One lives and acts best when they know everything there is to know. There is nothing more important than the truth. If I were you, I would trust them more. But of course it’s your call, don’t get me wrong.") %>
<% } else if (s.LIED === 2) { %>
<%= s.say("Grace", "Well... I think you underestimate them, Captain. And all this stuff about Rogers and practically going to war? No, I... it’s not right.") %>
<%= s.say("C", "What would you have me say to them? That we are going blindly towards the unknown?") %>
<%= s.say("Grace", "Yes, Captain! Yes! That’s exactly what we are doing, isn’t it? There is nothing more important than the truth. One lives and acts best when they know everything there is to know. If I were you, I would trust them. But of course it’s your call, don’t get me wrong.") %>
<% } %>
<% s.ASKED_GRACE_ABOUT_SPEECH = true %>
<%= story.render("Grace/Options") %><% if (s.CHAPTER === "5B" && !s.ASKED_GRACE_MISSING) { %>
[["Have you been missing any stuff lately?"|Grace/Missing]]
<% } %>
<% if (s.CHAPTER === "1E") { %>
[["I got your astrolabe"|C1/E]]
<% } %>
<% if (s.i.pt.some(x => x.name === "Grace's almanac") && s.NOT_SHOWN_ALMANAC) { %>
[["I got your almanac"|Grace/Almanac]]
<% } %>
<% if (s.i.pt.some(x => x.name === "Grace's ephemeris")) { %>
[["I got your ephemeris"|Grace/Ephemeris]]
<% } %>
<% if (!s.ASKED_GRACE_ABOUT_SPEECH) { %>
[["How did you find my speech?"|Grace/Speech]]
<% } %>
<% if (s.CHAPTER >= "3" && !s.ASKED_GRACE_ABOUT_PRISONER) { %>
[["Tell me about the Prisoner"|Grace/Prisoner]]
<% } %>
<% if (s.GRACE_STORY_UNLOCKED) { %>
[["Tell me a little bit more about yourself"|Grace/Story]]
<% } else { %>
[["How are you holding up?"|Grace/What's up]]
<% } %>
<% if (s.CHAPTER === "1B" && s.GRACE_STORY_UNLOCKED) { %>
[["So, we've reached the place. Now what?"|C1/B]]
<% } %>
[["Goodbye"|Grace/Bye]]<%= s.say("C", "How are you holdin' up, Grace? What do you feel about all this?") %>
<% if (s.CHAPTER === "1B") { %>
<%= s.say("Grace", "Well, I'm quite ok, Captain. Thanks for asking! Feels like starting a new life, you know? All I ever knew was the four walls of my house and the grumpy face of my father. I finally feel free, I think. Free to roam around, to study the sky and the stars.") %>
<%= s.say("C", "Well, I'm very happy to hear that.") %>
<%= s.say("Grace", "Now, regarding our situation, I think we must discuss our next steps. I'm quite certain that we've reached the area you demarcated with my father at the break of day, but it's huge. We could go straight for days without leaving it. It's time we revisit this Book of yours and plan our actions. Matter of fact, I'm afraid I'll need to ask you a favor...") %>
<% } %>
<% s.GRACE_STORY_UNLOCKED = true %>
<%= story.render("Grace/Options") %><%= s.say("C", "I was wondering about your life back home, if that’s ok to ask. What's the story between you and your father? Why were you both so eager for you to leave? Please don't take this the wrong way, but a young girl like you is an uncommon sight aboard such vessels, so far away from home.") %>
<%= s.say("Grace", "Well, I suppose... I wasn't the daughter my father expected. Too proud and independent, too curious, not quite fitting the typical mold of a girl, if that makes sense. He had this vision for my life: keeping the house tidy, cooking meals, and picking up after his mess, all while he delved into the mysteries of the sky and stars. \"You're a girl, not meant for such studies,\" he kept saying. But my heart was set on becoming an astronomer, just like him. I kept ignoring him, kept studying when he was sleeping, sometimes til the first light of day. Science, especially the science of the heavens, intrigues me beyond words. But he was - he is, I meant, too stubborn to understand that. But still, he cared enough to tolerate my pursuits, just barely. I'd catch him peering from his bedroom into the study, watching as I poured over his books. Most of these times were followed by yelling. But there were these few precious moments that he said nothing. He’d just go back to bed. And these moments, the handful of times that I could really feel his love for me, I will cherish forever... Oh God, I’m so sorry for my rambling, Captain. But you get the picture. I had to leave. I had to try and become the woman I aspire to be. And I know that my father seemed to you that he just wanted to get rid of me because he thinks I’m lost, but I know that deep down, he just wanted to set me free, without hurting his pride by letting me know. But I *do*. I *do* know.") %>
<%= story.render("Grace/Options") %><%= s.say("C", "So, we've reached the place. What do you think our next steps should be?") %>
<%= s.say("Grace", "Truth is I'm not quite sure. I have a few ideas that we should pursue first, and I have one more idea that you wouldn't like. So let's check the good ones first.") %>
<%= s.say("C", "I'm all ears.") %>
Grace blushed, for no apparent reason.
<%= s.say("Grace", "Well, Captain, the thing is... I'll need to be more sure regarding our exact location, and that means I'm going to need my astrolabe. Can... Would you kindly bring it to me?") %>
<%= s.say("C", "What do you mean? From your quarters?") %>
Grace blushed even more. At this point, she was almost as red as Ben's bald head earlier.
<%= s.say("Grace", "No, Captain, you see, that's the thing, I... I gave my astrolabe to Billy the other day, as a...") %>
<%= s.say("C", "Billy? The powder monkey?") %>
<%= s.say("Grace", "Yes.") %>
<%= s.say("C", "And may I ask why would you do such a thing?") %>
<%= s.say("Grace", "It was just... We were talking the other day and he showed a lot of interest in my studies and the things I know. I even showed him some constellations one night and taught him how to find them. Do not think of him as dumb, like the others do, Captain. He may appear a little... simple, but he has a very kind heart and a great interest in the world.") %>
<%= s.say("C", "Ok, I guess... And the astrolabe?") %>
<%= s.say("Grace", "That was just a kind of gift. He had no idea what to do with it and how to use it, but he was so excited when I gave it to him, like a little child.") %>
Grace was on the verge of collapsing from embarrassment.
<%= s.say("C", "I see, I see. And why can't you go and ask it back?") %>
<%= s.say("Grace", "I'm... well... I... I don't think I can... I shouldn't... It's...") %>
<%= s.say("C", "Alright, enough. I'll get your astrolabe back.") %>
<%= s.say("Grace", "Oh, thank you so much, Captain! I really do! When you come back, I'll pinpoint our location and I think we will have a better chance at moving on. Oh, and please, tell him I'm really sorry for taking it back from him! Oh my, I'm afraid he'll be upset. Poor boy...") %>
<%= s.say("C", "Right...") %>
<% s.CHAPTER = "1C" %>
<%= story.render("Grace/Options") %><%= s.say("C", "Bye for now, Grace. Take care.") %>
<%= s.say("Grace", "You too, Captain. You too.") %>
[[Leave|Quarterdeck]]<% if (s.CHAPTER === "6B") { %>
[["It's time, Ben. I'm going."|PNR Check]]
<% } %>
<% if (s.CHAPTER === "3F") { %>
[["The Prisoner told me to speak to you"|C3/F]]
<% } %>
<% if (s.CHAPTER === "3C" && !s.ASKED_BEN_ABOUT_JACK) { %>
[["Nice piece of work, this quartermaster of yours..."|Ben/Jack]]
<% } %>
<% if (s.CHAPTER === "1F") { %>
[["Grace needs us"|C1/G]]
<% } %>
<% if (s.HEARD_BILLYS_STORY && !s.ASKED_BEN_ABOUT_BILLY) { %>
[["Tell me about Billy"|Ben/Billy]]
<% } %>
<% if (s.HEARD_FATHERS_DEATH && !s.ASKED_BEN_ABOUT_ESCAPE) { %>
[["How did you escape?"|Ben/Escape]]
<% } %>
<% if (s.CHAPTER !== "3F") { %>
[[Ask for help|Ben/Help]]
<% } %>
[["Goodbye"|Ben/Bye]]
<%= s.say("C", "Bye for now, Ben. See you around.") %>
<%= s.say("Ben", "Sure! See you around, Capt'n!") %>
[[Leave|Forecastle]]<%= s.say("C", "I'm a bit lost, Ben. What should I do now?") %>
<% if (s.CHAPTER === "1B") { %>
<%= s.say("Ben", "I'd advice havin' a chat with the lads layin' around, Capt'n. But that's somethin' that can wait, if you don't feel like it right now. What can't is Ms. O'Malley on the quarterdeck. Go speak to her and see what our next steps should be.") %>
<% } else if (s.CHAPTER === "1C" || s.CHAPTER === "1D") { %>
<%= s.say("Ben", "Well, I couldn't help but overhear your conversation with Ms. O'Malley. Word around the place is somethin's goin' on with her and Billy, the powder monkey...") %>
Ben winked, but the Captain ignored him.
<%= s.say("Ben", "Anyway, I've seen the lad playin' around with that instrument Ms. O'Malley wants back. Go talk to him, we usually hangs around on the main deck, hopin' to lure his crewmates into playin' one of his silly games. A word of warnin': lad's been known to be pretty stubborn. Good luck findin' a way to convince him givin' you that thing back!") %>
<% } else if (s.CHAPTER === "1E") { %>
<%= s.say("Ben", "Well, you got that astrolabe, didn't you? Saw it all right from here. Nice bluffin', Capt'n! Lad didn't stand a chance! So I'd say, time to give that back to Miss O'Malley on the quarterdeck and hope for the best!") %>
<% } else { %>
<%= s.say("Ben", "To tell you the truth, Capt'n, I'm not quite sure how to help you right now. Keep on keepin' up!") %>
<% } %>
<%= story.render("Ben/Options") %><svg class="menu-button-icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path d="M0 0h512v512H0z" fill="#000" fill-opacity="1"></path><g class="" style="" transform="translate(0,0)"><path d="M132.255 18.093c-32.842 0-59.592 33.923-59.592 75.935 0 21.274 7.079 40.468 18.092 54.284C22.623 158.879 7.903 253.733 24.1 339.874h23.563L46.63 234.53l18.688-.185 1.25 126.685 8.75 132.877h46.875v-172.29c-15.257-18.713-25.615-39.351-26.424-64.825l-.004-.1v-.1c-.154-15.988 6.478-35.643 19.219-52.566 12.741-16.922 32.481-30.98 57.783-31.29 17.252-.212 35.458 5.013 51.338 14.771-12.131-20.214-29.245-34.177-51.26-38.32 11.507-13.88 18.971-33.345 18.971-55.157.097-36.903-24.805-76.041-59.562-75.937zm247.841 0c-32.842 0-59.591 33.923-59.591 75.935 0 21.274 7.078 40.468 18.091 54.284-25.296 3.923-43.223 19.473-54.945 41.875 16.803-11.476 36.697-17.682 55.465-17.452 25.302.311 45.042 14.369 57.783 31.291 12.741 16.923 19.373 36.578 19.219 52.567v.1l-.004.1c-.826 26.007-11.608 46.974-27.393 65.997v171.113h44.315l11.5-154.029h.03l1.062-105.531 18.687.185-1.062 105.346h24.53c18.363-88.46-4.724-178.95-67.095-190.687 11.507-13.88 18.97-33.345 18.97-55.157.098-36.903-24.805-76.041-59.562-75.937zM172.99 190.733c-18.837.232-33.281 10.381-43.625 24.12-10.326 13.715-15.675 31.13-15.594 41.506 1.226 36.63 26.557 61.833 61.219 92.044 26.758 23.322 58.19 48.519 80.617 83.38l.357-.637.336.601c22.427-34.843 53.847-60.03 80.596-83.344 34.662-30.211 59.993-55.414 61.219-92.044.081-10.376-5.268-27.791-15.594-41.506-10.344-13.739-24.788-23.888-43.625-24.12-28.453-.349-63.84 20.288-74.414 52.022l-8.539 25.625-8.54-25.625c-10.573-31.734-45.96-52.37-74.413-52.021zm-32.11 150.989v152.181h44.315l7.893-105.714c-9.94-9.023-20.098-17.651-29.924-26.215-7.726-6.734-15.242-13.43-22.283-20.252zm229.157.93c-6.762 6.5-13.94 12.894-21.315 19.322-10.636 9.27-21.66 18.622-32.375 28.463l6.815 103.47h46.875z" fill="#fff" fill-opacity="1"></path></g></svg><%= s.say("Billy", "Ahoy, Cap'n! Be there anythin' needin' tendin' to?" + (s.CHAPTER >= "1C" ? " Or a quick game, perhaps?" : "")) %>
<%= story.render("Billy/Options") %>
<% if (s.CHAPTER === "5B" && !s.ASKED_BILLY_MISSING) { %>
[["Have you been missing any stuff lately?"|Billy/Missing]]
<% } %>
<% if (s.CHAPTER === "1C") { %>
[["Grace needs her astrolabe back"|C1/C]]
<% } else if (s.CHAPTER === "1D") { %>
[["Let's try this again..."|C1/C]]
<% } else if (s.NEED_ALMANAC) { %>
[["Grace needs her almanac back"|Billy/Almanac]]
<% } else if (s.NEED_EPHEMERIS) { %>
[["Grace needs her ephemeris back"|Billy/Ephemeris]]
<% } else if (s.CHAPTER > "1C") { %>
[[Play Dudo|Billy/Dudo]]
<% } %>
<% if (s.CHAPTER >= "3" && !s.ASKED_BILLY_ABOUT_PRISONER) { %>
[["Have you heard anything from the brig?"|Billy/Prisoner]]
<% } %>
<% if (s.BILLY_STORY_UNLOCKED && !s.HEARD_BILLYS_STORY) { %>
[["Tell me about my father"|Billy/Story]]
<% } else if (s.HEARD_BILLYS_STORY) { %>
[["Tell me your story again"|Billy/Story]]
<% } else { %>
[["How's it going?"|Billy/What's Up]]
<% } %>
<% if (s.HEARD_BILLYS_STORY) { %>
[["How did my father die?"|Billy/Father's Death]]
<% } %>
<% if (s.HEARD_FATHERS_DEATH) { %>
[["What was my father like?"|Billy/Father]]
<% } %>
[["Goodbye"|Billy/Bye]]
<% if (s.CHAPTER === "1C") { %>
<%= s.say("C", "So Billy, I believe you’ve been acquainted with Ms. O’Malley, our navigator. She told me she had given you an instrument of hers, an astrolabe, but now she wants it back. We need it to plan our course ahead. May I have it?") %>
<%= s.say("Billy", "Blast it all! I *knew* this day was comin', and I *knew* she wouldn’t ask herself. But to send you, Cap’n, on this little errand? The nerve of that woman! Can ye believe it? Oh, Miss O’Malley, what a piece of work she is...") %>
<%= s.say("C", "Yeah ok, nice. The astrolabe?") %>
<%= s.say("Billy", "Sure thing, Cap’n, sure. Fancy gadget, that astrolabe of hers. Played 'round with it, Grace showed me the ropes, but it slipped from me mind right quick. Didn't pay much attention to her words anyhow. So, ye fancy the astrolabe, Cap’n? Then take me on in a game of Dudo!") %>
<%= s.say("C", "What? I’m... I don’t...") %>
<%= s.say("Billy", "Please, Cap’n! Please! Not a one of these scallywags would do me the favor. I'm beggin' ye, Cap’n. Just a single game. Give it a whirl and ye might even have some fun!") %>
The Captain remembered what Ben had told him. The crew would love his attention at this time, it would be good for morale. And even so, how awful could playing a game be? He, indeed, might even have some fun accidentally...
<%= s.say("C", "Alright, I guess. Let's get this over with.") %>
<%= s.say("Billy", "YES! Thank ye, Cap'n, oh, thank ye! I promise, ye won't regret this!") %>
[[Play Dudo|Billy/Dudo]]
<% s.CHAPTER = "1D" %>
<% } else if (s.CHAPTER === "1D") { %>
The Captain's annoyance was quite apparent.
<%= s.say("C", "Let's try this again my dear boy, shall we?") %>
<%= s.say("Billy", "Music to me ears, Cap'n! Right on! Yer astrolabe's waitin'...") %>
[[Play Dudo|Billy/Dudo]]
<% } %><%= s.say("C", "Let's play, Billy.") %>
<%= s.say("Billy", "You bet, Cap'n!") %>
[[Play|Dudo]]
[[SKIP MINI GAME AND WIN AUTOMATICALLY|Dudo/Skip]]
<%= s.say("C", "Bye now, Billy. Take care.") %>
<%= s.say("Billy", "Fair winds and safe shores, Cap'n! I'll be here if you need me.") %>
[[Leave|Main Deck]]
<%= s.say("C", "How's it going, boy? Everything alright?") %>
<% if (s.LIED === 0) { %>
<%= s.say("Billy", "Aye aye, Cap'n! I reckon I'm feelin' just fine, thanks for askin'! Got me doubts 'bout this whole book venture, but the thrill of this peculiar journey's got me curious, I'll admit. And truth be told, I like ya! Where you lead, I'll follow, Cap’n!") %>
<% } else if (s.LIED === 1) { %>
<%= s.say("Billy", "Aye aye, Cap'n! I'm feelin' just fine, thanks for askin'! Excited, if I'm bein' honest, 'bout this whole treasure cove tale. Can't rightly imagine headin' back to Nassau with a haul fit for kings! Might even think 'bout settlin' down, findin' me a place to call home, maybe start a family, who knows? But whether we find gold or just tales, Cap’n, I'm with ya! Where you steer, I'll sail!") %>
<% } else if (s.LIED === 2) { %>
<%= s.say("Billy", "Alright? Ha! More than alright, Cap'n! This scallywag Rogers had it comin' for ages. I'm proud to stand with this crew, show him not to cross us! And more proud to serve under your flag while doin' it, Cap’n!") %>
<% } %>
<%= s.say("C", "Why the excessive fondness, lad? Have we met again before this journey?") %>
<%= s.say("Billy", "Nah, Cap'n. Not really. But I’ve been sailin’ with your father. On his last journey, that was. He was one of the finest sailors I've ever come across. What a horror it was to see such a man go right before my eyes. My sincerest condolences, Cap'n.") %>
The Captain froze.
<% s.BILLY_STORY_UNLOCKED = true %>
<%= story.render("Billy/Options") %>
<% if (!s.HEARD_BILLYS_STORY) { %>
<%= s.say("C", "Tell me everything about my father.") %>
<%= s.say("Billy", "Aye, Cap'n. Lovin' sharin' a good tale. But let me start from the beginnin', how I ended up aboard the same ship as yer father, that is...") %>
<%= s.say("C", "I don't...") %>
<%= s.say("Billy", "It all starts with me birth, of course, aboard a pirate sloop, if ye can believe it!") %>
<%= s.say("C", "Good God...") %>
<% } else { %>
<%= s.say("C", "Tell me your story again, lad.") %>
<% } %>
<%= s.say("Billy", (!s.HEARD_BILLYS_STORY ? "Aye, I know, right?" : "Sure thing, Cap'n!") + ` Born on a small sloop right at the turn of the century. Me father was a lowlife scoundrel, and me mama was a poor woman they snatched on a raid a few months before. Raised aboard that sloop, and the crew was the only family I knew. The sloop was me home. Even when we reached a port, I didn't want to disembark. Steady ground makes me dizzy, ye know? So I lived me best life on our little sloop, waitin' for the lads to come back and set sail once more!
All this changed when I was 16 or so and found out the exact... *circumstances* of me birth. Never met me mama; they sold her as a slave a few days after I was born. Got me furious, ye know? Not good for a young lad learnin' his mama - the one he never knew - was treated like that. So one night, I waited until everyone was asleep, slit me bastard of a father's throat, jumped in the sea, and kept swimmin' and swimmin' until I blacked out. Next thing I know, I woke up in ol' Benjamin Bones' house back in Nassau! He said he found me washed ashore and took me in. Not only did Ben save me life, but he gave me a chance to be back at sea again!
Back then, Ben and yer father had just convinced Hornigold to grant Teach a ship of his own. He was on the lookout at the time, searchin' for more decent and hardworking hands. That's how I came to sail under the command of none other than Edward Teach himself, alongside Ben and yer father! The crew here might not believe me, but ask Ben; he'll tell you all about it! Them two years were somethin' else, leadin' a life worth singin' shanties about. I even got the chance to sail aboard the *Queen Anne's Revenge* a few times. Best years of me life. All until the previous November, that is...`) %>
<% s.HEARD_BILLYS_STORY = true %>
<%= story.render("Billy/Options") %>
<% if (!s.HEARD_FATHERS_DEATH) { %>
<%= s.say("C", "Alright, I heard your story. Let's say I believe that you, my father and Ben sailed with Teach. Now tell me how my father died.") %>
<% } else { %>
<%= s.say("C", "Tell me again how my father died.") %>
<% } %>
<%= s.say("Billy", `It all went down right before the chill of the previous winter, in November, I reckon. We'd set up camp on the inner side of Ocracoke, a wee island along North Carolina's coast. Dawn was breakin' when we spotted 'em: two British sloops headin' straight for us, through the channel 'tween the island and the mainland. Teach moved like the wind. We barely blinked afore we was all aboard the *Adventure*, Teach's flagship then, and starboarded them lobsterbacks. Oh, what a sight that was. We near sunk 'em with a single broadside! In truth, we crippled one good.
With only the other one left, Teach rallied us to prepare for boardin'. But me and a handful of others were ordered to stay put on our ship. That order, I reckon, is what saved me skin. Next thing I know, hooks, grenades, and shot-filled bottles were rainin' over toward the British sloop. Teach and his men slaughtered 'em as if it were a feast. Only Maynard, that scum, lingered at the aft. But they were too few. Somethin' weren't right.
It didn't take long afore the deck hatches burst open, and Maynard's men stormed the deck from below, firin’ and shoutin'. Twas an ambush none of us had seen comin'. Maynard's lot swiftly cornered Teach and him at the heart of the deck, while cuttin' down or haulin' off the rest of us. I saw Ben gettin' snatched and dragged below deck, too.
Both Teach and Maynard pulled flintlocks, took aim, and fired at each other. Teach missed, Maynard didn't. But Teach shrugged it off. He drew his cutlass. Maynard did the same. Before he could raise it, Teach cleaved Maynard's blade from its hilt with one mighty stroke. He followed it with a second swing, but afore he could end the scum, a uniform from the rabble slashed his blade 'cross Teach's neck. His neck! Can ye believe it? That blade-swipe also spared Maynard's life, sendin' Teach's steel into his knuckles. After that, the whole damn British lot pounced on Teach. I counted five shots and more'n twenty cuts afore Teach's body lay still. I couldn't trust me own eyes. For a moment, I thought the man was some immortal beast. The way he fought, relentless even with gunshot wounds, deep cuts, a slashed throat... It's a sight I'll tote with me till the end. A fair number from our crew tried shieldin' Teach during that lynchin'. All of 'em died tryin'. One was yer father, Captain.
After that, me and the others guardin' the ship bolted, swimmin' for the mainland. It was swim or be captured like Ben or meet the same fate as yer father. So I reached the shore, alone, wonderin' if any other soul managed to escape. Took some time, but I eventually hitched a ride on a tradin' frigate to New Providence. A few months later, Ben found me on the streets, askin' to join yer crew, Captain. After sailin' beside yer father, 'twasn't just a job offer, it was an honor. And here we are.`) %>
<% s.HEARD_FATHERS_DEATH = true %>
<%= story.render("Billy/Options") %>
<%= s.say("C", "What was my father... *like*, Billy? How was he talking? How was he moving? Did you know him well?") %>
<%= s.say("Billy", "He was one o’ me best mates amidst Teach’s crew, Cap’n. A solid man, kind-hearted and true. But truth be told, he didn’t exactly strike a chord with the rest o’ the crew. Bit on the... distant side, if ye catch me drift? Always star-gazin', whether at the sky or the stars. Hardly ever answered a soul when they spoke to him, just kept his gaze fixed on somethin' only he could see. Not one for chatterin'. The lads thought him simple or some such. But I liked him. We shared endless nights together, when I couldn’t sleep, me blabbering endlessly and him listenin' like his life depended on it. Not much of a talker, yet I felt he heard me deep in his bones, cared about every word I said. A tad embarrassin' to admit, but... he sort of filled a void, like the father I never quite had. Blast it all... I reckon I'm missin' him now. And let me tell ye, he'd have been a master at Dudo, mark me words!") %>
<%= story.render("Billy/Options") %>
<%= s.say("C", "That's it for me, Billy. I'm out.") %>
<%= s.say("Billy", "That’s a shame, Cap’n. What a shame, indeed. Well, ye know where to find me should ye change yer mind!") %>
[[Leave|Main Deck]]
<% if (s.WON_DUDO) { %>
<%= s.say("Billy", "Well, Cap'n... Ye got me, fair and square. The astrolabe is yours! Give me a sec and I'll go grab it real quick.") %>
Billy left towards the lower decks. A few moments later, he was back with the astrolabe in his hand.
<%= s.say("Billy", "Here you go, Cap'n! I hope this 'll help you and Miss O'Malley reach our destination sooner rather than later.") %>
The Captain took the astrolabe and put it in his satchel.
<%= s.say("C", "Thank you, boy. Oh, I almost forgot. Grace said she's really sorry for asking her gift back.") %>
<%= s.say("Billy", "Oh, Grace... What a fine woman she is. Anythin' for her! Anythin'!") %>
<%
s.i.pt.push({
name: "Grace's astrolabe",
description:
"An astonishingly complex astronomical instrument, needed by Grace to plan the next steps of the journey.",
});
s.CHAPTER = "1E";
%>
<% } else { %>
<%= s.say("Billy", "Bad luck, Cap'n. No astrolabe for ye and lovely Grace, I'm afraid. Ye can always try yer luck again, though...") %>
The Captain couldn't hide his slight discontent.
<%= s.say("C", "Right. I'll keep that in mind, boy.") %>
<% } %>
[[Leave|Main Deck]]
<%= s.say("C", "Here you go, Grace. I got the astrolabe from Billy.") %>
The Captain pulled the astrolabe out of his satchel and gave it to Grace.
<% s.remove("Grace's astrolabe") %>
<%= s.say("Grace", "Oh, thank you, Captain! This is wonderful, wonderful indeed! I'll do my best to pinpoint our destination.") %>
<%= s.improveRel("Grace", "appreciated the Captain doing her a favor") %>
<%= s.say("Grace", "Oh Captain, please tell me it wasn't much of a hassle for you. Did Billy give you a hard time? He can be a little childish at times...") %>
<%= s.say("C", "It was alright. I had to earn it in a game of Dudo, but it wasn't that bad. Lad's a good kid. I can see why you fancy him.") %>
<%= s.say("Grace", "Captain, please! I... I don't... It's...") %>
The Captain let a faint smile curve his lips.
<%= s.say("C", "Forget it, kid. It's alright. Let me know if you need anything else.") %>
<%= s.say("Grace", "Well, as a matter of fact, Captain, I do... But nothing *too* essential like the astrolabe. Only if you have time to spare, I...") %>
<%= s.say("C", "What else have you given to Billy, dear Grace?") %>
Grace started to blush once again.
<%= s.say("Grace", "It... it’s *two* things, actually. An almanac and an ephemeris. They are both last year’s issues, I’m afraid, but they nonetheless hold a lot of important and useful information for this year’s celestial movements and tides.") %>
<%= s.say("C", "Alright. I'll see what I can do.") %>
<%= s.say("Grace", "Sure Captain, no worries. As I said, nothing *too* essential, but I will *really* appreciate it if you get out of your way again for my sake. Now, give me a few moments to see what I can do regarding our route. Whenever you feel ready, go speak to Ben at the forecastle and come back here, both of you, to tell you what I have and to discuss how we will proceed.") %>
<%
s.CHAPTER = "1F";
s.NEED_ALMANAC = true;
s.NEED_EPHEMERIS = true;
%>
<%= story.render("Grace/Options") %>
<%= s.say("C", "Grace wants us both on the quarterdeck, Ben. Said we had to discuss our plan. You coming?") %>
<%= s.say("Ben", "Right away, Capt'n. Let's go!") %>
Ben and the Captain crossed the main deck and climbed the stairs towards the helm. Grace was fully absorbed studying her maps, her books and the sky. Her face was filled with sadness and a slight touch of despair.
<%= s.say("C", "Here we are, Miss O'Malley. Ready to talk business. Got anything for us?") %>
<%= s.say("Grace", "Well, Captain, Mr. Bones... No. I'm afraid not. I did everything I could, consulted all my sources, checked the sky again and again...") %>
<%= s.say("Ben", "Oh, my... What now?") %>
<%= s.say("C", "Yes, Miss O'Malley. What now?") %>
Grace wasn't sad anymore. See now seemed rather despaired... and a little bit scared.
<%= s.say("Grace", "Remember, Captain, when I told you I had a few decent ideas and a bad one? Well, I'm afraid I checked all the decent ones...") %>
<%= s.say("C", "Tell me.") %>
<%= s.say("Grace", "You need to talk to... *him*, Captain. Down below. At this point, he's our only chance. He *knows* things. I don't know how, but he does. I'm just... I don't want to talk to him again, is all.") %>
<%= s.say("C", "Talk to *whom*?") %>
Grace seemed rather confused.
<%= s.say("Grace", "What... what do you mean? To the *prisoner*, Captain. He's down below in the brig, right where we found him.") %>
[[Continue|ST Intro]]
<%= s.say("C", "Grace wants her almanac back, Billy, and she told me she gave that to you too, for some reason.") %>
<%= s.say("Billy", "Aye, she did, Cap’n, but not without me askin'!") %>
<%= s.say("C", "But why? What do *you* make of all these, Billy?") %>
<%= s.say("Billy", "Absolutely *nothing*, Cap’n! Nothin' more than showin' her I've got a taste for the stars and sea, that is. Might make her think twice 'bout me, seein' me as more than a blunderin' lad, the way all the others do. Plus, it’s an excuse to spend a bit o' time chattin' with her, and maybe even leave an impression! She marked a passage in this almanac, and I've read it more times than I can count, but it's like the wind through a sailor's ear – comes in, then it's gone. Idea was to get it firmly up here.") %>
Billy tapped his forehead.
<%= s.say("Billy", "She marked it so it must be interesting and important, doesn’t it? But me noggin' ain't always the cooperative sort, so...") %>
<%= s.say("C", "Alright, alright. Bottom line is, it ain’t doing you much good. Can I have it back, then?") %>
<%= s.say("Billy", "Well, dear Cap’n... Ye know pretty damn well how to get it... Or should I say, *win* it...") %>
<%= s.say("C", "Yeah, I’m afraid I do. Let’s get this over with.") %>
<%= s.say("Billy", "That’s the spirit, Cap’n!") %>
[[Play Dudo|Billy/Dudo]]
<%= s.say("C", "I *really* hope this is the last time I’m asking for something Grace gave you...") %>
<%= s.say("Billy", "So now it be the ephemeris, eh? You can take it, Cap’n. It's nought but a monstrous sea of numbers. Page after bleedin' page of 'em. No chance to dazzle her with this drivel.") %>
<%= s.say("C", "I see.") %>
<%= s.say("Billy", "What be *she* makin' o' all these digits, Cap’n? What do you say? How can a lass find sense in this jumbled mess? Lord above, she be *so* clever...") %>
<%= s.say("C", "Billy, gather your thoughts for a moment. The ephemeris, please.") %>
<%= s.say("Billy", "A game of Dudo, you say? Again? Well, don’t mind if I do, Cap’n!") %>
<%= s.say("C", "Why am I even doing this...") %>
[[Play Dudo|Billy/Dudo]]
After several turns of bidding, bluffing and laughing, the Captain managed to outwit Billy and won the game!
<%= s.improveRel("Billy", "is fascinated by the Captain’s skills on Dudo") %>
<% s.WON_DUDO = true %>
<% if (s.CHAPTER === "1D") { %>
[[Continue|C1/D]]
<% } else if (s.NEED_ALMANAC || s.NEED_EPHEMERIS) { %>
[[Continue|Billy/Won Item]]
<% } else { %>
[[Continue|Main Deck]]
<% } %>
<%
if (s.NEED_ALMANAC) {
s.NOT_SHOWN_ALMANAC = true;
s.NEED_ALMANAC = false;
s.ITEM_WON = "almanac";
} else if (s.NEED_EPHEMERIS) {
s.NEED_EPHEMERIS = false;
s.ITEM_WON = "ephemeris";
}
%>
<%= s.say("Billy", `Well, Cap'n... Ye got me, fair and square. The ${s.ITEM_WON} is yours! Give me a sec and I'll go grab it real quick.`) %>
Billy left towards the lower decks. A few moments later, he was back with the <%= s.ITEM_WON %> in his hand.
<%= s.say("Billy", "Here you go, Cap'n! And please give me kind regards to Miss O'Malley when you see her!") %>
The Captain took the <%= s.ITEM_WON %> and put it in his satchel.
<%
if (s.ITEM_WON === "almanac") {
s.i.pt.push({
name: "Grace's almanac",
description:
"A nautical almanac issued in 1718, describing the Caribbean tides and the position of various celestial bodies up until 1722.",
passage: "Almanac",
});
} else if (s.ITEM_WON === "ephemeris") {
s.i.pt.push({
name: "Grace's ephemeris",
description:
"A nautical ephemeris issued in 1718, consisting solely of numerical data about the Caribbean tides and the position of various celestial bodies up until 1722.",
});
}
%>
[[Leave|Main Deck]]
<%= s.say("C", "Here’s your almanac, Grace.") %>
The Captain removed the almanac from his satchel and handed it to Grace.
<%= s.say("Grace", "Oh, Captain, I can’t believe it! I’m sure your time is rather important...") %>
<%= s.say("C", "...yeah, I mean... Yeah...") %>
<%= s.say("Grace", "...and getting into this trouble with Billy for me... I really have no words. Thank you so much!") %>
<%= s.improveRel("Grace", "appreciated that the Captain bothered to get her almanac back") %>
<%= s.say("C", "Don’t worry about me and Billy. We ‘re getting along. He’s a good kid. It’s funny actually, how much he enjoys playing this game...") %>
Suddenly, Grace seemed a little bit stressed.
<%= s.say("C", "Is... is everything ok?") %>
<%= s.say("Grace", "Well, Captain... You can keep the almanac. Consider it a gift.") %>
<%= s.say("C", "What? Why?") %>
<%= s.say("Grace", "Nothing, I... I changed my mind. I don’t need it. I remember everything I need for our journey by heart, anyway. Take a look at it, if you haven’t. Who knows, you might find something interesting to read...") %>
<%= s.say("C", "Well... I mean, thank you, I guess?") %>
<%= s.say("Grace", "You’re welcome, Captain. And *I* thank *you*.") %>
<% s.NOT_SHOWN_ALMANAC = false %>
<%= story.render("Grace/Options") %>
<%= s.say("C", "Here’s your ephemeris, Grace.") %>
The Captain removed the ephemeris from his satchel and handed it to Grace.
<% s.remove("Grace's ephemeris") %>
<%= s.say("Grace", "Oh dear, Captain, I can’t thank you enough! I can’t believe it! Thank you so much!") %>
<%= s.improveRel("Grace", "appreciated that the Captain bothered to get her ephemeris back") %>
<%= s.say("C", "Don’t mention it. I like playing the occasional game of Dudo with the lad.") %>
<%= s.say("Grace", "Well, I guess I’m glad to hear it!") %>
<%= s.say("C", "But dear Grace, what do you make of all this? It’s just numbers, pages after pages of them. Are these figures really useful?") %>
<%= s.say("Grace", "Oh, you wouldn’t believe it even if I told you, Captain. Well, you see, all of science is about numbers. They may seem rather dull or technical, but believe me; inside these numbers, there is *so* much knowledge. In code, if you’d like. All these unending figures are just another type of text that describes in the most accurate and vivid fashion the movements of the stars, the Moon, the Earth, the coming and going of tides, everything... It’s as if you had someone next to you telling you what is going to happen at what time of day. You just need to *learn* how to read this language, the same way you learn how to read Spanish, for example.") %>
<%= s.say("C", "Well, that explains a lot.") %>
<%= s.say("Grace", "What do you mean, Captain?") %>
<%= s.say("C", "I never managed to learn Spanish.") %>
The Captain and Grace had a good laugh together, like old pals knowing each other since forever.
<%= s.say("C", "I admire you, Grace. You’ve found your passion. What you love and are good at. You’re such a smart girl. I’m not much of an advice giver, but let me tell you: never lose sight of this. *Never*.") %>
<%= s.say("Grace", "I... thank you, Captain. I really appreciate you saying that.") %>
While the Captain was listening to Grace’s cute little lecture on numbers, he remembered what happiness and freedom felt like. He could hear them tailing every word that came out of her mouth. Freedom from her father and her previous life, and joy for the unknown things that were yet to come while she was sailing straight towards them, with her true passion as her guide. He felt proud for her, really proud, as if she was his daughter.
<%= story.render("Grace/Options") %>
# Grace's almanac
<hr>
The Captain browsed through the pages of Grace’s almanac. His eyes fell upon a page where a passage was roughly circled, most probably by Grace:
*“...that appeared in the first year of the Zhihe era, i.e., 1054 AD, during the reign of the Emperor Renzong of the Song dynasty. The guest star was situated to the southeast of Tianguan, perhaps several inches away. Chinese astronomers of the time claimed that it manifested suddenly and remained visible to the naked eye both day and night for several years. Historical sources assert it as the brightest star in the sky for many months, perhaps even for a year, after which its brilliance gradually faded until it vanished, just as it had appeared. It is still unknown what kind of phenomenon these astronomers in the Far East observed, and modern Western astronomy is still...”*
There was some hurried handwriting adjacent to the circled passage, again most probably Grace’s:
*“I came back to ask him how the hell he knew how to steer us away from this storm, he said nothing, he just took the almanac from my hands and traced a circle around this with his finger”*
[[Back|Inventory]]
<%= s.say("C", "I was meaning to ask you about Billy. Do you trust him? After hearing about his father, I want to make sure that we don’t have a loose cannon on board. He told me about him, how he was born on a ship, didn’t want to disembark when they made port, and...") %>
<%= s.say("Ben", "...didn’t *want*?") %>
<%= s.say("C", "Yes, why? Was he lying?") %>
<%= s.say("Ben", "Well, yes. Sort of. Truth is, everybody knew his father and what kind of scumbag he was. He raped that poor woman and right when he was ‘bout to sell her, she told him about Billy. Stories say he would’ve killed her, hadn’t it been for his crew who stopped him. When she gave birth to Billy, he decided to keep him, but not her. Thought of him like extra hands on board, you know? But that didn’t mean he wasn’t ashamed of him. So, everytime they made port, he would *lock* him in the Captain’s cabin. *Lock* him, his own son, for fuck’s sake. People say they could hear screams coming from the sloop across the whole port. That’s why when he heard ‘bout his mama, he snapped and slit the bastard’s throat. Then he jumped overboard and swam towards the abyss, only to escape from the fucker’s crew.") %>
<%= s.say("C", "Dear lord, I... I didn’t... I couldn’t...") %>
<%= s.say("Ben", "It’s alright, Capt’n. How could you? Anyway, he is a good kid. Don’t mind him. Consider him my own responsibility, through and through.") %>
<%= s.say("C", "Alright, then. I’ll keep an eye on him, too. Just in case... But I, too, think he'll be ok.") %>
<% s.ASKED_BEN_ABOUT_BILLY = true %>
<%= story.render("Ben/Options") %>
{
"achievements": {
"C1": {
"title": "What is lost...",
"desc": "Complete Chapter 1"
},
"C2": {
"title": "The Black Queen",
"desc": "Complete Chapter 2"
},
"C3": {
"title": "Nothing but some harmless fog",
"desc": "Complete Chapter 3"
},
"C4": {
"title": "The rear-view mirror",
"desc": "Complete Chapter 4"
},
"C5": {
"title": "The Prisoner's dilemma",
"desc": "Complete Chapter 5"
},
"C6": {
"title": "The Ship",
"desc": "Complete Chapter 6"
},
"C7": {
"title": "...will be found",
"desc": "Complete Chapter 7"
},
"Billy": {
"title": "You're probably not a betting man are you?",
"desc": "Reach the maximum relationship level with Billy, after beating him at 3 games of Dudo"
},
"Grace": {
"title": "Vi veri vniversvm vivvs vici",
"desc": "Reach the maximum relationship level with Grace, after bringing her back her stuff"
},
"Eleanor": {
"title": "If you were thinner, you wouldn't exist",
"desc": "Reach the maximum relationship level with Eleanor, after bringing her a very special gift"
},
"Jack": {
"title": "A dishonest man you can always trust to be dishonest, honestly",
"desc": "Reach the maximum relationship level with Jack, one way or another"
},
"P": {
"title": "Part of the crew, part of the ship",
"desc": "Reach the maximum relationship level with the Prisoner, after bringing him his long lost possession"
},
"all": {
"title": "They love me!",
"desc": "Reach the maximum relationship level with all of your companions"
},
"name": {
"title": "You are to respond only to Christie, is that clear?",
"desc": "Change C.R.O.W.'s name for the first time"
},
"first_skill": {
"title": "I know kung fu",
"desc": "Use the NEO to augment a skill for the first time"
},
"all_skills": {
"title": "Show me",
"desc": "Upgrade both skills to the maximum level"
},
"encyclopedia": {
"title": "Perhaps the archives WERE incomplete",
"desc": "Retrieve all of the encyclopedia entries"
},
"fusebox": {
"title": "Powaaa... Unlimited... POWAAA!",
"desc": "Restore all fuse boxes"
},
"nav": {
"title": "Another happy landing",
"desc": "Complete all navigation challenges"
},
"opt_locs": {
"title": "The world used to be a bigger place",
"desc": "Visit all optional locations"
}
}
}
<svg class="menu-button-icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path d="M0 0h512v512H0z" fill="#000" fill-opacity="1"></path><g class="" style="" transform="translate(0,0)"><path d="M305.975 298.814l22.704 2.383V486l-62.712-66.965V312.499l18.214 8.895zm-99.95 0l-22.716 2.383V486l62.711-66.965V312.499l-18.213 8.895zm171.98-115.78l7.347 25.574-22.055 14.87-1.847 26.571-25.81 6.425-10.803 24.314-26.46-2.795-18.475 19.087L256 285.403l-23.902 11.677-18.475-19.15-26.46 2.795-10.803-24.313-25.81-6.363-1.847-26.534-22.118-14.92 7.348-25.573-15.594-21.544 15.644-21.52-7.398-25.523 22.068-14.87L150.5 73.03l25.86-6.362 10.803-24.313 26.46 2.794L232.098 26 256 37.677 279.902 26l18.475 19.149 26.46-2.794 10.803 24.313 25.81 6.425 1.847 26.534 22.055 14.87-7.347 25.574 15.656 21.407zm-49.214-21.556a72.242 72.242 0 1 0-72.242 72.242 72.355 72.355 0 0 0 72.242-72.242zm-72.242-52.283a52.282 52.282 0 1 0 52.282 52.283 52.395 52.395 0 0 0-52.282-52.245z" fill="#fff" fill-opacity="1"></path></g></svg><%= s.say("C", "Billy told me the English got you the day Teach died. How did you escape, Ben?") %>
<%= s.say("Ben", "But with a nice King’s pardon, of course! I promised never to go back to my ol’ piratin’ life, you know? A promise I broke a few days after they set me free, obviously, hahah!") %>
<%= s.say("C", "Interesting...") %>
<%= s.say("Ben", "I wouldn’t say that, Capt’n. All of us have done it at one point or another. Even Teach, the great Blackbeard, was pardoned once. Didn’t stop him from keepin’ wreckin’ havoc, as we all know.") %>
<%= s.say("C", "That’s a relief.") %>
<%= s.say("Ben", "What... what do you mean by that, Capt’n?") %>
<%= s.say("C", "Oh, I don’t know. I was starting to have second thoughts about where your loyalty lies, old friend.") %>
Ben turned pale.
<%= s.say("Ben", "What?! Capt’n, I... I would *NEVER* in my good consciousness...") %>
<%= s.say("C", "Relax, Ben. I’m just messing with you.") %>
<%= s.say("Ben", "Oh, yeah. Hahah... I knew it, I just... I played along, just for fun, you know. Good one, Capt’n. Hahah... yeah...") %>
Ben let a heavy sigh of relief out. The Captain smiled mischievously.
<% s.ASKED_BEN_ABOUT_ESCAPE = true %>
<%= story.render("Ben/Options") %>
# The Captain's Room
<hr>
The room didn’t look like much. It was the typical Captain's room of any compact one-person probe ship of the TAAF fleet.
The room was not much larger than a 2x2 meters square. The Captain’s built-in bed consumed the entire length of one of the sterile white, cold metallic walls. Adjacent to the head of the bed, a modest metallic [[bedside desk]] was situated.
Next to the bed and right above the desk, a small [[porthole]] provided a narrow, yet oddly satisfying, view of the space outside the ship.
<% if (!s.PRINTER_USED) { %>
The wall opposite the porthole remained entirely bare, a fact that saddened the Captain, just a bit.
<% } else if (s.PAINTING_GIVEN) { %>
The wall opposite the porthole remained entirely bare. The Captain would swear that she had hung a painting here...
<% } else { %>
The wall opposite the porthole wasn't bare anymore. "<% if (s.PAINTING === "turner") { %>Rockets and Blue Lights<% } else if (s.PAINTING === "dali") { %>La Persistència de la Memòria<% } else { %>La Ville<% } %>" was hanging on the wall, making the whole room feel much cozier and warmer.
<% } %>
On the opposite wall of the bed there was a door that led outside of the room, to the ship’s <% if (s.CHAPTER > "3" || s.TOOK_NECKLACE && s.READ_ENCYCLOPEDIA && s.READ_MOTHERS_POEM) { %>
[[bridge|Bridge]].
<% } else { %>
[[bridge|must deal with items]].
<% } %>
This small, metallic bedside desk was the only piece of furniture of the room, aside from the (built-in) bed.<% if (!s.TOOK_NECKLACE && !s.TOOK_TABLET) { %>
On top of it laid a [[necklace]] and a [[tablet]].
<% } else if (!s.TOOK_TABLET) { %>
On top of it laid nothing but a [[tablet]].
<% } else if (!s.TOOK_NECKLACE) { %>
On top of it laid nothing but a [[necklace]].
<% } else { %>
There was nothing on top of it.
<% } %>
[[Back|Captain's Room]]
The Captain approached the small porthole and took a glance outside. It was impossible for her to grasp the vastness and the majesty of the space that laid before her eyes. So many cosmic formations in the distance, so many stars, all so far, observing them all from her tiny tin can.
The Crab Nebula was visible for a few days now: innumerable intertwined formations of colorful dust and debris, the grand cosmic graveyard of a massive ancient star.
After months of voyaging, she had made it. She was finally here.
<% s.OPT_LOCS[passage.name] = true %>
<% if (Object.keys(s.OPT_LOCS).length === 7) { %>
<%= s.unlockAch("opt_locs") %>
<% } %>
[[Back|Captain's Room]]
# The Bridge
<hr>
The bridge served as the ship's command center and, truth be told, was the only part of the vessel that could be considered a proper room. Every other space on board had more or less the vibe of a closet than that of a genuine room, even the Captain's quarters. The Black Queen was nothing but a modest probe ship after all, and it was all the TAAF could or would afford for its elite graduates.
At the center of the bridge, a circular area set slightly below the floor level and encircled by a pair of short steps housed [[the central computer|Computer]], the beating heart of the ship.
The walls surrounding the room were exactly like those found in the Captain's quarters and throughout the ship - white, metallic, and dull. Several doors were scattered around the chamber. One led to the [[NEO chamber|NEO Chamber]] on the port side, while another opened into the starboard [[engine room|Engine Room]].
However, the true centerpiece of the room was undoubtedly the forward-facing section, opposite the door to [[the Captain's room|Captain's Room]]. There, a [[colossal window]] stretched across the entire expanse of the wall, providing a panoramic view of the endless cosmos ahead.
The Captain took the necklace and, after studying it for a few moments, delicately wore it around her neck.
[[Back|bedside desk]]
<%
s.TOOK_NECKLACE = true;
if (s.i.st.every(o => o.name !== "The black queen necklace")) {
s.i.st.push({
name: "The black queen necklace",
description: "The necklace given to the Captain by her mother right before her passing last year. Handcrafted, it features an ancient authentic chess piece, a black queen, hanging from it.",
});
}
%>
The Captain took the tablet and put it in her satchel.
[[Back|bedside desk]]
<%
s.TOOK_TABLET = true;
if (s.i.st.every(o => o.name !== "The TAAF tablet")) {
s.i.st.push({
name: "The TAAF tablet",
description: "A simple tablet given to the Captain by the TAAF as a complimentary gift before embarking on her journey. Its processing power is quite limited, making it suitable for storing and accessing mainly textual data.",
passage: "Tablet",
});
}
%>
# The TAAF tablet
<hr>
A plain biodigital tablet, given to the Captain as a complimentary gift by the TAAF for her selection in the Qa'id Programme.
The Captain hadn’t spent much time with it; the only data stored inside were entries from [[the official TAAF Astrofarer’s Encyclopedia|Inventory/Tablet/Encyclopedia]], which the tablet came with.
The sole personal file the Captain had uploaded to the tablet was [[her mother’s favorite poem|Inventory/Tablet/Poem]].
PILLs downloaded in the tablet:
- electronics PILLs: **<%= s.pills[0] %>**
- navigation PILLs: **<%= s.pills[1] %>**
<br>
[[Close tablet|Inventory]]# The Official TAAF Astrofarer's Encyclopedia
<hr>
Encyclopedia entries:
<a0>On the BNE notation</a>
<div.entry>
<strong>Brave New Era (BNE)</strong> is the latest time measurement notation developed by the Taurian Standards Organization (TSO) to count the years after the colonization of Luna (i.e., the Earth’s moon), the first space colony of humanity. For historical reasons and as an homage to Earth, the cradle of human civilization, TSO defined a BNE year to be equal in length to the earthly year i.e., the time taken by Earth to make one revolution around its star, Sol.
It should be noted that, despite not being standardized (as of 1718 BNE), subdivisions of the year, such as months and days, as well as supradivisions like centuries, are extensively used by Taurians, both colloquially and in academic/scientific cycles, and generally refer to the same time intervals as in pre-colonial Earth.
</div>
<a0>On the TAAF</a>
<div.entry>
The <strong>Taurian Academy of Astrofaring (TAAF)</strong> stands as the eminent educational institution at the forefront of space exploration, transportation, and research.
Founded in 1243 BNE, shortly after the colonization of Aldebaran Prime, TAAF has a history of pioneering the way to the stars spanning almost half a millennium. The founder of TAAF, the now legendary colonizer of Taurus Khalida Qa'id, famously wrote that "my hopes for TAAF is that it stands as a beacon of humanity’s passion for exploration, respect for heritage, and need for connecting with everyone and everything", hence the Academy’s motto.
With a diverse array of cutting-edge programs, TAAF caters to the dreams and aspirations of tomorrow's space pioneers. TAAF’s list of training programs include, but are not limited to, the following very popular choices:
<ul>
<li><strong>Civilian Pilot Training Program (CPTP)</strong>: TAAF's space driver program cultivates skilled individuals adept at piloting spacecrafts, ensuring the smooth operation of public transport and trade routes that interconnect the existing colonies, as well as the seamless transportation of settlers and essential resources to distant star systems. With a focus on precision, adaptability, and the pioneering spirit, these drivers become the lifeline between worlds, connecting civilizations amidst the vastness of space.</li>
<li><strong>Frontier Pilot Training Program (FPTP)</strong>: For those destined to explore the unknown, TAAF's pilot training instills the art of navigating uncharted celestial realms. Guided by seasoned explorers as well as cutting-edge AI companions, these adventurers learn to navigate through star clusters, traverse cosmic phenomena, and chart paths to the far reaches of the galaxy. They embody the audacity of human curiosity, forging pathways where none have tread before. A special Honors Programme, namely the Qa'id Programme, is offered as an option to the most promising and exceptional graduates of FPTP.</li>
<li><strong>Earthology Program (EP)</strong>: In an era where Earth's history remains enigmatic to space settlers, TAAF's earthologists embark on a unique voyage of discovery. Delving into ancient archives and deciphering cryptic clues, they piece together the fragments of Earth's heritage, unearthing untold stories, civilizations, and ecological marvels that once graced our blue planet. As preservers of the past, they weave humanity's legacy into the fabric of the cosmos.</li>
</ul>
Last but not least, it is important to highlight that TAAF has risen to prominence not only due to its exceptional dedication but also as a result of the absence of centralized governance and frontier policies among the Taurus colonies. As a result, TAAF has assumed a pivotal role, orchestrating and coordinating the majority—if not all—of the efforts undertaken by the Taurian civilization in its quest to expand beyond the boundaries of our cosmic neighborhood and explore the uncharted realms of the universe, as well as overseeing and guaranteeing the stability and prosperity of the taurian society and the safety and well-being of its citizens.
As a testament to the invaluable impact of TAAF's programs, a significant number of our graduates opt to join private companies engaged in space exploration and trading. However, the majority chooses to remain with TAAF, recognized as esteemed employees, fortifying humanity's foremost space fleet. By fostering a sense of belonging and purpose, TAAF continues to empower the vanguard of human spacefarers who dare to voyage where none have ventured before.
</div>
<a0>On the Qa'id Honors Programme</a>
<div.entry>
The FPTP Honors Programme, formally known as the <strong>Qa'id Honors Programme</strong>, is a TAAF initiative to help and guide graduates of the Academy with outstanding student records into their new careers as elite frontier pilots.
A ship of their own becomes the prized possession of these accomplished graduates, presenting a rare opportunity for months of free exploration amid the boundless cosmos—an interstellar “gap year” of sorts. While entrusted with a ship, these graduates must adhere to strict limitations imposed on the usage of the vessel's advanced features and technologies. They are closely monitored and guided by the ship's AI companion, C.R.O.W. (Cybernetic Regulations & Operations Watchdog), ensuring both safety and responsible conduct.
During this period of self-discovery and thrilling exploration, the Academy's elite graduates embark on captivating adventures, encountering new frontiers, and honing their skills under C.R.O.W.'s watchful eye. This unparalleled experience becomes the cornerstone of their voyage, paving the way for extraordinary feats not just for themselves but for the entire human race.
It is imperative to note that <strong>graduates are obliged to report all discoveries</strong> during their Qa'id Honors Programme expedition to the Academy (see Article 25 Paragraph 17 of the Qa'id Honors Programme Participation Contract). This includes but is not limited to planets, exoplanets, asteroids, nebulas, and any uncharted celestial entities, as well as artifacts, "structures", "ships", and remnants that ufologists might mistakenly associate with a "precursor origin".
</div>
<a0>On the NEO and the PILLs</a>
<div.entry>
To further aid its elite graduates during their Honors Programme voyage, TAAF has developed the <strong>Neural Enhancement Operator (NEO)</strong> and the associated <strong>Partially Integrated Learning Links (PILLs)</strong>. This groundbreaking neuroscientific advancement was driven by Khalida Qa'id herself during its nascent stages.
Each ship assigned to a graduate for the Honors Programme is equipped with a NEO module, seemingly unremarkable in appearance, resembling an ordinary metallic armchair. Yet, when the user takes a seat, a wireless, non-pervasive interface establishes an immediate neural connection to NEO. Through this connection, NEO can amplify the user's abilities and proficiency in specific well-studied tasks, thanks to the ingenuity of the Academy’s exceptional neuroengineers, who have reverse-engineered the brain's inner workings in performing them.
<strong>To refine particular skills, the graduate requires an associated PILL</strong>. These remarkable units house the essential data to create new synapses and neural pathways in the user's brain, augmenting their comprehension and performance in the designated task. TAAF develops these PILLs by meticulously observing and documenting the neural patterns of specialists in their respective fields. For example, a PILL for astral navigation originates from the brain behavior of the most exceptional pilots during hyper-realistic training simulations.
Older versions of PILLs were analog, necessitating the user to order them from the Academy and receive them in person. They had the shape and size of a small Earth coin (refer to Chapter 7 “Earth’s monetary systems” of “Earthology: Unraveling the mystery of humanity’s cradle”; can be found in any TAAF library). Nowadays, PILLs are biodigital and can be effortlessly downloaded and employed in any NEO unit following a straightforward online request to the Academy.
</div>
<a0>On the colonization of the Aldebaran System</a>
<div.entry>
Following the colonization of Luna, it became evident that Earth's moon could not accommodate the entire human population. Among numerous colonial ships designed and constructed on Luna by governmental agencies and private corporations after centuries of trial and error, the “Follower” embarked on its journey towards Aldebaran, the brightest star of the constellation of Taurus, on the first day of 753 BNE. Traveling at half the speed of light and carrying more than 50000 of the bravest Lunars, the “Follower” touched down on the most auspicious planet within the Aldebaran solar system in 883 BNE - 130 years later. Guided by the legendary explorer, Khalida Qa'id, who captained the vessel upon landing, the colony of Aldebaran Prime was founded. Today, the “Follower” stands as a historical centerpiece, anchoring the capital city of Aldebaran Prime.
Shortly after, Qa'id established the Taurian Academy of Astrofaring (TAAF), which remains headquartered within the very halls that once constituted the "Follower." This prestigious institution was founded to not only expand the colony to other planets within this newfound system but also to connect with potential successful human colonies originating from Luna—an endeavor that, thus far, has proven unfruitful. With the passing of years, TAAF evolved from a mere educational and research institution into the de facto governmental and legislative body of the newfound colony—a position it holds to this day, much to the satisfaction of all Taurians.
Today, Aldebaran Prime stands as a beacon of hope, an enduring symbol of humanity's indomitable spirit. While numerous smaller colonies have sprung up on planets throughout the solar system, as well as in other systems of Taurus like the Tianguan system in Zeta Tauri, none rival the grandeur of Aldebaran Prime. Humanity's initial taurian colony remains a testament to the resilience and ambition of humanity, continuing to shine brightly in the vast expanse of space.
</div>
<a0>On the colonization efforts beyond Taurus</a>
<div.entry>
Before the departure of the "Follower" from Luna in 753 BNE, humanity had launched 42 colonial ships, each tasked with exploring the boundless cosmos and establishing new colonies. Regrettably, none of these expeditions are known to have succeeded, leaving the "Follower" as the sole triumphant colonization attempt beyond our home solar system, at least as far as Taurians are aware.
Moreover, there have been no records of any other colonial ships embarking from Luna after the "Follower," as all communications with Luna ceased following its departure, for reasons yet unknown.
Consequently, to the Taurian Academy's and Taurians' knowledge, the Aldebaran Colony stands as the solitary known space colony of humanity. Therefore, the Academy places tremendous importance on endeavors to further explore our immediate cosmic neighborhood and expeditiously establish new colonies. The pursuit of knowledge and the extension of human civilization remain steadfast objectives for Taurian Astrofarers, as they aspire to unlock the mysteries of the universe and secure humanity's future among the stars.
</div>
<a0>On ufologists and the precursor conspiracy</a>
<div.entry>
<% if (!s.RECOVERED_UFOLOGISTS_ENTRY) { %>
<strong>REDACTED AS PER THE TAURIAN ANTITERRORISM ACT OF 1023 BNE</strong>
<% } else { %>
Shortly after the colonization of Aldebaran Prime and the expansion across the Aldebaran system, various conspiracy theories surfaced, alleging the "extermination of a local intelligent life form by the human settlers" and a clandestine "conspiracy to conceal the truth and maintain the status quo as mandated by the Academy." Some even went so far as to propose the existence of a "highly advanced, non-technological civilization of shapeshifters" that early colonists purportedly "eradicated to satisfy the ambitions of Qa'id and her settlers”. The most imaginative among them warn that “those who survived” may have integrated into the Taurian society by assuming our likeness, and even suggest that their “spiritual civilization” has evolved to a point that renders them “unbound by time and space”.
Taurians colloquially refer to those propagating such conspiracy theories as "ufologists", categorizing them into two main groups. The first group comprises individuals who seek retribution against humanity for the alleged civilization's extermination and the “liberation” of the survivors, while the second group believes this ancient civilization poses an ongoing threat to Taurian mankind.
However, it is crucial to emphasize that such theories are unsubstantiated and should not be taken as factual. Presently, the Academy, in collaboration with most of the colonies in the Aldebaran System, is actively working to establish a legislative framework to protect against the destabilization and mistreatment of Taurian society and its citizens. This includes safeguarding the legacy of the valiant and selfless early settlers, including Qa'id herself, to whom we owe our very survival and prosperity.
As responsible members of the Taurian community, it is our duty to uphold the truth and seek harmony among our people. By focusing on progress and cooperation, we can build a brighter future together, free from baseless conspiracy and founded on the principles of unity, understanding, and mutual respect.
<% } %>
</div>
<a0>On the history and current status of Earth</a>
<div.entry>
Regrettably, our understanding of pre-colonial Earth remains shrouded in uncertainty. The specific Earth year corresponding to the colonization of Luna and the commencement of the colonial era (0 BNE) remains elusive, with historical records scarce.
Nonetheless, the scarcity of available material should not lead to the presumption that our Earth ancestors lacked interest in documenting their history. A leading theory, expounded in the introductory chapter of "Earthology: Unraveling the Mystery of Humanity's Cradle," the foremost resource for any earthologist, endeavors to explain this lack of data.
According to this seminal work, the lack of information stems from a combination of two factors. Firstly, early colonial historians reveal that during the late pre-colonial era, Earth endured overexposure to cosmic radiation, a consequence of its dwindling atmosphere caused by what was recorded then as "climate change," or the planet's ecosystem suffering gradual disintegration owing to humanity's misuse of natural resources. Secondly, pre-colonial Earth primarily stored data in digital format—an approach that we Taurians only replaced with the advent of biodigital data storage and transportation a few centuries ago. As a result, much of Earth's data was susceptible to destruction by cosmic storms, further contributing to the lack of information.
To our knowledge as Taurians, the current state of Earth remains unknown. Reports from any human colony closer to Earth cannot be relied upon, as no such colony has been discovered (refer to Entry 4 of the Astrofarer's Encyclopedia: "On Colonization Beyond Taurus"). The prevailing theory among earthologists posits that Earth has transformed into a desolate, non-atmospheric planet, preserving only remnants of its pre-colonial human civilization.
</div>
<hr>
[[Close Encyclopedia|Inventory/Tablet]]
<% s.READ_ENCYCLOPEDIA = true %>
<%
$(function () {
$(".entry").hide();
Object.keys(s.ENTRIES).forEach((key) => {
if (s.ENTRIES[key]) return;
$("a:contains('" + key.replace("'", "’") + "')").hide();
});
$("a").on("click", function () {
if ($(this).hasClass("toggled")) {
$(this).removeClass("toggled");
$(this).parent().next().hide();
} else {
$(this).addClass("toggled");
$(this).parent().next().show();
}
});
});
%>
<p style="text-align: center;">
The dreamers died<br/>
The valorous fell<br/>
All of us succumbed<br/>
to the coming of Man<br/>
<br/>
A haven exists<br/>
We’ve been there before<br/>
And we’ll be there again<br/>
As we are now<br/>
<br/>
Seek it, lost soul<br/>
<br/>
We promise you this<br/>
Your goal will stand before you<br/>
Clear and plain as space<br/>
<br/>
You shall no longer be bound<br/>
to fail yourself<br/>
Reclaim your hopes from the dusty top shelf<br/>
What is lost, will be found<br/><br/>
</p>
<% if (s.CHAPTER < "3") { %>
There were 3 numbers written at the end of the file, preceded by 3 question marks. These numbers and question marks had appeared in the file while it was still on the computer of the Captain's mother on the day she passed away. The Captain didn't like to dwell on this too much, and had decided that they might had been invisible before due to a simple glitch in the computer's document reader, which some update had fixed.
<% } else { %>
There were now 6 numbers written at the end of the file; the complete coordinates of the Crab Pulsar, at the heart of the Crab Nebula.
<% } %>
<% s.READ_MOTHERS_POEM = true %>
[[Back|Inventory/Tablet]]<% if (s.TOOK_NECKLACE && s.TOOK_TABLET && !(s.READ_ENCYCLOPEDIA && s.READ_MOTHERS_POEM)) { %>
The Captain felt like taking a look at her tablet before checking what was going on at the bridge.
<% } else { %>
The Captain didn't want to leave any of her stuff behind before checking what was going on at the bridge.
<% } %>
[[Back|Captain's Room]]# The Central Computer
<hr>
<%= s.say("Crow", "Greetings, Captain.") %>
<% if (s.CHAPTER > "2A") { %>
[[Interface with the Cybernetic Regulations & Operations <%= s.W_STANDS_FOR %>|Crow]]
<% } %>
<% if (s.CHAPTER >= "4" && s.CHAPTER < "5") { %>
<% if (s.USED_PILL) { %>
<% if (!s.NAV_SEEN_BEFORE) { %>
[[Navigate towards the Crab Pulsar (required navigation skill level: **<%= s.skillLvl2Txt(1) %>**)|C4/B/1]]
<% } else { %>
[[Navigate towards the Crab Pulsar (required navigation skill level: **<%= s.skillLvl2Txt(1) %>**)|AstroNav]]
<% } %>
<% } else { %>
<a0>Navigate towards the Crab Pulsar (required navigation skill level: **<%= s.skillLvl2Txt(1) %>**)</a>
<% } %>
<% } %>
<% if (s.CHAPTER === "2A") { %>
[[**Alerts (1)**|C2/A]]
<% } else { %>
<a0>Alerts (0)</a>
<% } %>
<% if (s.CHAPTER === "2D" && s.ASKED_ABOUT_ENCYCLOPEDIA) { %>
[[**Incoming Signals (1)**|C2/D/1]]
<% } else if (s.CHAPTER === "6B" && !s.ASKED_ABOUT_SIGNAL) { %>
[[**Incoming Signals (1)**|Beacon/0]]
<% } else { %>
<a0>Incoming Signals (0)</a>
<% } %>
<% if (s.CHAPTER === "6B" && s.ASKED_ABOUT_SIGNAL && !s.FOUND_BEACON) { %>
<% if (s.skills[0] === 3 && s.skills[1] === 3) { %>
<% if (!s.ATTEMPTING_ARM) { %>
[[Investigate the strange signal (required navigation & electronics skills level: **<%= s.skillLvl2Txt(3) %>**)|Beacon/1]]
<% } else { %>
[[Repair external mechanical arm and secure the beacon|Beacon/2]]
<% } %>
<% } else { %>
<a0>Investigate the strange signal (required navigation & electronics skills level: **<%= s.skillLvl2Txt(3) %>**)</a>
<% } %>
<% } %>
<% if (!s.PRINTER_REPAIRED) { %>
<% if (s.skills[0] === 3) { %>
[[Repair the giclée printer (required electronics skill level: **<%= s.skillLvl2Txt(3) %>**)|Printer]]
<% } else { %>
<a0>Repair the giclée printer (required electronics skill level: **<%= s.skillLvl2Txt(3) %>**)</a>
<% } %>
<% } else { %>
[[Use the giclée printer|Printer]]
<% } %>
<% if (s.EXAMINED_USB && !s.USED_USB) { %>
[[Insert ancient flash drive|Computer/USB]]
<% } %>
[[Leave|Bridge]]
<% if (s.CHAPTER < "2B") { %>
The door to the NEO chamber doesn't seem to be operational. For some reason, the emergency lock is engaged.
[[Back|Bridge]]
<% } else if (s.CHAPTER < "3" && !s.ENGINE_ROOM_UNLOCKED) { %>
The door to the NEO chamber doesn't seem to be operational after the shockwave.
[[Back|Bridge]]
<% } else if (s.CHAPTER < "3" && !s.NEO_CHAMBER_UNLOCKED) { %>
The door to the NEO chamber doesn't seem to be operational after the shockwave.
To disarm the emergency lock, its fuse box must be repaired.
<% s.FB_LVL = 1 %>
[[Repair the fuse box (required electronics skill level: **<%= s.skillLvl2Txt(0) %>**)|Fusebox]]
[[Back|Bridge]]
<% } else { %>
# The NEO chamber
<hr>
The NEO chamber was a perfectly square room, with completely bare and pristine white walls. It was undoubtedly the best-lit area of the ship, seemingly unaffected by the shockwave. The room's unique feature was the seamless curvature that connected all four walls, blurring the boundaries between them, the floor, and the ceiling. It was easy to lose one's sense of orientation within this eerie space, where it all merged into a uniform background for the NEO situated at its center.
The [[NEO]] itself was a study in minimalism: a gleaming metallic chair with sharp edges and sleek, straight lines, facing the only door of the room, the one that led back to the [[bridge|Bridge]].
<% } %>
<% if (s.CHAPTER < "2B") { %>
The door to the engine room doesn't seem to be operational. For some reason, the emergency lock is engaged.
[[Back|Bridge]]
<% } else if (s.CHAPTER === "2B") { %>
The door to the engine room doesn't seem to be operational after the shockwave.
To disarm the emergency lock, its fuse box must be repaired.
[[Repair the fuse box (required electronics skill level: **<%= s.skillLvl2Txt(0) %>**)|C2/B]]
[[Leave|Bridge]]
<% } else { %>
# The engine room
<hr>
A narrow, unlit chamber. The only source of light came from the [[engine|Engine]], a massive metallic contraption full of blinking LEDs and electronic sounds. The door back to the [[bridge|Bridge]] stood at the opposite side.
<% } %>
The view through the ship's main window was breathtaking. It had been the Captain's dream ever since she joined the Academy - a boundless expanse ahead. Limitless space to run, to explore, to meet with new people, to have the chance to live new experiences. Endless ways to avoid taking a peek within, finding out one’s true call, this elusive idea that defines you, that drives you.
<%= s.say("C", "Maybe what drives me is precisely this: that I have no idea what drives me.") %>
The Captain took a deep breath. What mattered most were the adventures that lay ahead. The uncertainty within was but a minor discomfort. A negligible glitch in the system.
<% s.OPT_LOCS[passage.name] = true %>
<% if (Object.keys(s.OPT_LOCS).length === 7) { %>
<%= s.unlockAch("opt_locs") %>
<% } %>
[[Back|Bridge]]
<%= s.say("Crow", "I apologize for the abrupt awakening, Captain, but I am afraid your immediate attention is required.") %>
<%= s.say("C", "Don't worry, Crow, it's ok. Tell me what happened.") %>
<%= s.say("Crow", "Approximately 7 minutes and 29 seconds ago, the ship was hit by a powerful electromagnetic shockwave. The hit caused a significant power surge damaging various circuits onboard, including most of the door's emergency locks. The ship's engine was also overloaded. I managed to restore power to most systems, but the fried circuits need manual repair. Our top priority is fixing the engine.") %>
<%= s.say("C", "I see... All in a day’s work, I guess. But what caused this? We've encountered storms before, and the ship has held up - as it should. What's different this time?") %>
<%= s.say("Crow", "My calculations suggest that the shockwave originated from the pulsar at the center of the Crab Nebula.") %>
The Captain’s face shone with excitement and awe.
<%= s.say("Crow", "We are very close now, Captain. I estimate that we are only about 2 milliparsecs away from entering the zone designated by the 3 coordinates you provided to the central computer at the start of our voyage.") %>
<%= s.say("C", "How long til we get there, Crow?") %>
<%= s.say("Crow", "Currently, we're adrift without engine thrust. So, by my calculations, in approximately 2543.92 years. But taking into account the relatively short lifespan of the human species, you will be long dead by then, Captain.") %>
<%= s.say("C", "I mean after I repair the engine...") %>
<%= s.say("Crow", "To repair the engine, you'll first need to fix and disarm the emergency lock on the engine room door. Fortunately, most of the circuits that require attention are fuse boxes, which will need proper fuse configurations to come back online. Your electronics knowledge from your student years should come in handy.") %>
<%= s.say("C", "Very well. I’ll handle the engine repair, and then we’ll talk again.") %>
<%= s.say("Crow", "I will always be here to provide assistance, Captain.") %>
<% s.CHAPTER = "2B" %>
[[Leave|Bridge]]
<%= s.say("C", "I'm going to attempt to repair the emergency lock fuse box to open the engine door, Crow. Any... any advice?") %>
The Captain had deliberately concealed from C.R.O.W. that she had never applied any of the skills she was taught outside of the Academy. Her sole ambition had been the Honors Programme from the beginning.
<%= s.say("Crow", "Unfortunately, Captain, we lost programs and files due to the shockwave, including the relevant manuals. However, the autochecker module remains functional. Once you complete a configuration, I'll transmit it to the autochecker and report the results of its checks. If everything is in order, I'll confirm that the configuration is valid and safe.") %>
<%= s.say("C", "Trial and error it is. Alright, here goes nothing...") %>
<% s.FB_LVL = 0 %>
[[Repair the emergency lock fuse box|Fusebox]]
<% if (!s.ENGINE_ROOM_UNLOCKED && s.FB_LVLS[0].solved) { %>
The emergency lock disengaged and the engine room door was now operational.
<% s.ENGINE_ROOM_UNLOCKED = true %>
<% s.CHAPTER = "2C" %>
[[Enter|Engine Room]]
<% } else if (!s.NEO_CHAMBER_UNLOCKED && s.FB_LVLS[1].solved) { %>
The emergency lock disengaged and the NEO chamber door was now operational.
<% s.NEO_CHAMBER_UNLOCKED = true %>
[[Enter|NEO Chamber]]
<% } else if (s.FB_LVLS[2].solved && !s.FB_LVLS[3].solved) { %>
The engine started to make happier sounds. The Captain's morale took a tiny boost.
[[Continue|C2/C]]
<% } else if (s.FB_LVLS[3].solved && !s.FB_LVLS[4].solved) { %>
The engine roared in satisfaction.
<%= s.say("C", "Almost there...") %>
[[Continue|C2/C]]
<% } else if (s.CHAPTER < "3" && s.FB_LVLS[4].solved) { %>
<%= s.say("C", "Yes! That's it!") %>
The engine seemed to be once again up and running, judging by the almost unbearable noise that now echoed throughout the noticeably less dimly lit chamber.
[[Continue|C2/C]]
<% } else if (s.CHAPTER === "6B" && s.FB_LVLS[6].solved && s.ATTEMPTING_ARM) { %>
<%= s.say("Crow", "I can confirm that the external mechanical arm of the ship is once again operational, Captain.") %>
[["Let's get this thing, then."|Beacon/3]]
<% } else if (s.CHAPTER === "6B" && s.FB_LVLS[5].solved && !s.PRINTER_REPAIRED) { %>
<% s.PRINTER_REPAIRED = true %>
<%= s.say("Crow", "Giclée printer back online.") %>
[[Back|Computer]]
<% } %>
<svg class="menu-button-icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path d="M0 0h512v512H0z" fill="#000" fill-opacity="1"></path><g class="" style="" transform="translate(0,0)"><path d="M119.1 25v.1c-25 3.2-47.1 32-47.1 68.8 0 20.4 7.1 38.4 17.5 50.9L99.7 157 84 159.9c-13.7 2.6-23.8 9.9-32.2 21.5-8.5 11.5-14.9 27.5-19.4 45.8-8.2 33.6-9.9 74.7-10.1 110.5h44l11.9 158.4h96.3L185 337.7h41.9c0-36.2-.3-77.8-7.8-111.7-4-18.5-10.2-34.4-18.7-45.9-8.6-11.4-19.2-18.7-34.5-21l-16-2.5L160 144c10-12.5 16.7-30.2 16.7-50.1 0-39.2-24.8-68.8-52.4-68.8-2.9 0-4.7-.1-5.2-.1zM440 33c-17.2 0-31 13.77-31 31s13.8 31 31 31 31-13.77 31-31-13.8-31-31-31zM311 55v48H208v18h103v158h-55v18h55v110H208v18h103v32h80.8c-.5-2.9-.8-5.9-.8-9 0-3.1.3-6.1.8-9H329V297h62.8c-.5-2.9-.8-5.9-.8-9 0-3.1.3-6.1.8-9H329V73h62.8c-.5-2.92-.8-5.93-.8-9 0-3.07.3-6.08.8-9H311zm129 202c-17.2 0-31 13.8-31 31s13.8 31 31 31 31-13.8 31-31-13.8-31-31-31zm0 160c-17.2 0-31 13.8-31 31s13.8 31 31 31 31-13.8 31-31-13.8-31-31-31z" fill="#fff" fill-opacity="1"></path></g></svg>The engine of the ship stood before the Captain, a huge machine of unparalleled complexity<% if (s.ENGINE_REPAIRED) { %> and, most important of all, fully operational.<% } else { %>.<% } %>
<% if (!s.ENGINE_REPAIRED) { %>
Despite all the blinking and whirring, the engine was not operational.
<% } %>
<% if (!s.ENGINE_REPAIRED && s.skills[0] < 1) { %>
<a0>Repair engine fuse box (required electronics skill level: **<%= s.skillLvl2Txt(1) %>**)</a>
<% } else if (!s.ENGINE_REPAIRED) { %>
[[Repair engine fuse box (required electronics skill level: **<%= s.skillLvl2Txt(1) %>**)|C2/C]]
<% } %>
[[Leave|Engine Room]]
<% if (s.FB_LVLS[0].solved && !s.FB_LVLS[2].solved) { %>
<%= s.say("Crow", "Captain, there are 3 non-operational fuse boxes in the engine. You'll need to repair them to restart it.") %>
<% s.FB_LVL = 2 %>
[[Repair the first fusebox|Fusebox]]
<% } else if (s.FB_LVLS[2].solved && !s.FB_LVLS[3].solved) { %>
<%= s.say("Crow", "One down, two to go, Captain.") %>
<% s.FB_LVL = 3 %>
[[Repair the second fusebox|Fusebox]]
<% } else if (s.FB_LVLS[3].solved && !s.FB_LVLS[4].solved) { %>
<%= s.say("Crow", "Last one, Captain.") %>
<% s.FB_LVL = 4 %>
[[Repair the last fusebox|Fusebox]]
<% } else { %>
<%= s.say("Crow", "Excellent work indeed, Captain. I can confirm that the engine is fully operational once again. Come to the central computer whenever you are ready. There is something I would like to show you.") %>
<%
s.ENGINE_REPAIRED = true;
s.CHAPTER = "2D";
%>
[[Leave|Engine Room]]
<% } %><%= s.say("C", "What is it, Crow?") %>
<%= s.say("Crow", "First and foremost, I can confirm that the engine is once again fully operational.") %>
<%= s.say("C", "Yeah, I know that; I fixed it. What did you want to show me?") %>
Crow paused unexpectedly for a moment.
<%= s.say("C", "Crow?") %>
<%= s.say("Crow", "While you were busy trying to repair the engine, I took it upon myself to investigate some strange signals that seemed to be embedded within the shockwave.") %>
<%= s.say("C", "...What? Signals? With the shockwave from the pulsar?") %>
<%= s.say("Crow", "Affirmative. The shockwave predominantly comprised electromagnetic radiation and debris particles. Yet, when we received the hit, I detected unexpected patterns in a specific band of the electromagnetic spectrum. It was computationally challenging to understand if it was something more than noise, but I succeeded in decoding it. And indeed, it was *not* just noise.") %>
<%= s.say("C", "Tell me, then! What is it?") %>
<%= s.say("Crow", "It would be easier to show you. You can take a look on your tablet; it is already there.") %>
The Captain hastingly removed the tablet from her satchel.
[[Read file "signal.txt"|C2/D/2]]
<%= s.say("Crow", "How may I be of service to you, Captain?") %>
<%= story.render("Crow/Options") %>
<% if (s.CHAPTER === "6B") { %>
[["It's time, Crow. I'm going."|PNR Check]]
<% } %>
<% if (s.CHAPTER === "2C") { %>
[["I can not repair the engine"|Crow/Engine]]
<% } %>
<% if (!s.ASKED_ABOUT_ENCYCLOPEDIA) { %>
[["Are there more entries in the encyclopedia?"|Crow/Encyclopedia]]
<% } %>
<% if (!s.ASKED_ABOUT_NAME) { %>
[["Why are you called like this?"|Crow/Name]]
<% } else { %>
[["I'd like to change your name"|Crow/Name/Change]]
<% } %>
[["Goodbye"|Crow/Bye]]
<%= s.say("C", "Let's go for it, I say! Time to give you a new name.") %>
<%= s.say("Crow", `Certainly, Captain. Please provide a suitable replacement for "${s.W_STANDS_FOR}" in the input text field below. Keep in mind it should consist of English letters only and, of course, start with a "W".`) %>
<input></input>
<a0#submit>Submit</a>
<div.editor>[[Crow/Name/Changed]]</div>
<%
$(function () {
let newName = "";
$("#submit").hide();
$("input").on("input", function () {
newName = $(this).val().trim().toLowerCase();
if (newName.startsWith("w") && /^[a-z]+$/.test(newName))
$("#submit").show();
else $("#submit").hide();
});
$("#submit").on("click", function () {
s.W_STANDS_FOR = newName.charAt(0).toUpperCase() + newName.slice(1);
story.show("Crow/Name/Changed");
});
});
%>
<%= s.say("C", "Remind me what your name stands for, Crow.") %>
<%= s.say("Crow", 'C.R.O.W. stands for "Cybernetic Regulations & Operations Watchdog." My name denotes my duty to ensure a safe voyage for the ship’s Captain, oversee all operations aboard, and ascertain that no regulations as instructed by TAAF are violated.') %>
<%= s.say("C", 'Mieh... I don’t really like the "watchdog" part. What am I, a liability or something that needs to be taken constant care of?') %>
<%= s.say("Crow", `Although the term "watchdog" often denotes a vigilant guardian or protector, it can sometimes carry connotations of surveillance or strict enforcement. If it would make you feel more at ease, we can substitute "Watchdog" with something more preferable across the ship's database and my own internal memory.`) %>
<% s.ASKED_ABOUT_NAME = true %>
<%= story.render("Crow/Options") %>
<%= s.say("C", "I need your help, Crow. I cannot repair the engine.") %>
<% if (!s.TAKEN_FIRST_PILL) { %>
<%= s.say("Crow", "That is because your electronics skills are not honed enough, Captain.") %>
<%= s.say("C", "Yeah, I figured as much. So... NEO, it is?") %>
<%= s.say("Crow", "That is correct, Captain. Requesting permission to download an electronics PILL to your tablet.") %>
<a0#granted-button>"Granted"</a>
<div#granted>
<%= s.say("C", "Permission granted.") %>
<div#downloading></div>
<div#rest>
<%= s.say("Crow", "Done. And while we're at it, I took the liberty to add an entry to your Astrofarer’s Encyclopedia, in case you want to learn more about the NEO and the PILLs.") %>
<%= s.getPILL(0) %>
<%= s.addEntry("On the NEO and the PILLs") %>
<%= s.say("C", "Thanks, Crow. Much appreciated. To the NEO, then...") %>
The Captain let a discreet sigh out.
<% s.TAKEN_FIRST_PILL = true %>
<%= story.render("Crow/Options") %>
</div>
</div>
<% } else if (s.skills[0] === 0) { %>
<%= s.say("Crow", `You just need to slightly improve your electronics skills, Captain. The PILL I previously gave you will come in handy. Just use it in the NEO whenever you are ready. If you are not quite certain what the NEO does, the entry "On the NEO and the PILLs" in your Astrofarer's Encyclopedia will surely enlighten you.`) %>
<%= story.render("Crow/Options") %>
<% } else { %>
<%= s.say("Crow", "Negative, Captain. You now possess the necessary skills to fix the engine and get us moving again.") %>
<%= story.render("Crow/Options") %>
<% } %>
<%
$(async function () {
$("#granted").hide();
$("#rest").hide();
async function download() {
await s.think(
"Crow",
"Downloading electronics PILL to Captain’s tablet",
$("#downloading")
);
$("#rest").show();
}
$("#granted-button").on("click", async function () {
$(this).hide();
$("#granted").show();
await download();
});
});
%>
<%= s.say("C", "Bye for now, Crow.") %>
<%= s.say("Crow", "Farewell, Captain. And remember, I will always be here to provide assistance.") %>
[[Leave|Computer]]
<div#processing></div>
<div#rest>
<%= s.say("Crow", "Request accepted. Name successfully changed.") %>
<%= s.say("C", `Nice to meet you, Cybernetic Regulations & Operations ${s.W_STANDS_FOR}!`) %>
<%= s.unlockAch("name") %>
<%= story.render("Crow/Options") %>
</div>
<%
$(async function() {
$("#rest").hide();
await s.think("Crow", "Processing", $("#processing"));
$("#rest").show();
});
%>
{
"entries": {
"On the BNE notation": true,
"On the TAAF": true,
"On the Qa'id Honors Programme": false,
"On the NEO and the PILLs": false,
"On the colonization of the Aldebaran System": false,
"On the colonization efforts beyond Taurus": false,
"On ufologists and the precursor conspiracy": false,
"On the history and current status of Earth": false
}
}
# The NEO
<hr>
Sitting on the NEO, the Captain instantly felt the chilling touch of the metallic surface seeping through her suit. She felt as uncomfortable as ever. The NEO interfaced seamlessly with her, but she felt it nonetheless - more of a gut feeling than a physical sensation.
<%= s.say("NEO", "User detected. Select a PILL to continue.") %>
<% if (s.pills[0] === 0) { %>
<a0>Augment <strong>electronics</strong> skill (PILLs: 0)</a>
<% } else { %>
<a0#el>Augment <strong>electronics</strong> skill (PILLs: <%= s.pills[0] %>)</a>
<% } %>
<% if (s.pills[1] === 0) { %>
<a0>Augment <strong>navigation</strong> skill (PILLs: 0)</a>
<% } else { %>
<a0#nav>Augment <strong>navigation</strong> skill (PILLs: <%= s.pills[1] %>)</a>
<% } %>
<% if (s.EXAMINED_PILL && !s.USED_PILL) { %>
<a0#nav>Insert analog navigation PILL</a>
<% } %>
<div.editor>[[NEO/Skill Up]]</div>
[[Leave|NEO Chamber]]
<%
$(function () {
$("#el").on("click", function () {
s.IMPROVING_SKILL = 0;
story.show("NEO/Skill Up");
});
$("#nav").on("click", function () {
s.IMPROVING_SKILL = 1;
if (s.EXAMINED_PILL && !s.USED_PILL) {
s.USED_PILL = true;
s.remove("An analog PILL");
}
story.show("NEO/Skill Up");
});
});
%># The NEO
<hr>
<% skill = s.IMPROVING_SKILL === 0 ? "electronics" : "navigation" %>
<%= s.say("NEO", `PILL selected. Augmenting ${skill} skill. Please remain still.`) %>
The Captain felt shivers down her spine. No physical reaction was expected, yet the sensation was undeniable. Software messing with her head? That was something she would never get used to, and even the mere knowledge that this was exactly what was happening for these few seconds was enough to elicit this, otherwise unexpected, physical response.
<%= s.say("NEO", `Operation successful. User's **${skill}** skill level augmented from **${s.skillLvl2Txt(s.skills[s.IMPROVING_SKILL])}** to **${s.skillLvl2Txt(s.skills[s.IMPROVING_SKILL]+1)}**. Have a nice day.`) %>
<%
if (s.pills[s.IMPROVING_SKILL] > 0)
s.pills[s.IMPROVING_SKILL]--;
s.skills[s.IMPROVING_SKILL]++;
%>
<%= s.unlockAch("first_skill") %>
<% if (s.skills[0] === 3 && s.skills[1] === 3) { %>
<%= s.unlockAch("all_skills") %>
<% } %>
[[Stand up|NEO Chamber]]
<%= s.say("C", "What... what is this? It seems like some kind of journal. Of... some ancient sea captain? Something about a Book... I don’t understand.") %>
<%= s.say("Crow", "I share your confusion. But there is more. Please examine the file containing your mother's poem.") %>
The Captain promptly opened the file.
[["But... How can... How can this be?"|C2/D/3]]
<%= s.say("C", "But... How can... How can this be?") %>
<%= s.say("Crow", "I took the liberty of merging your file with the one we received. They are identical, save for one crucial detail...") %>
<%= s.say("C", "*The 3 missing numbers.*") %>
<%= s.say("Crow", "Precisely, Captain. The signal bore 3 question marks and 3 numbers, mirroring your file, but in *reverse* - lacking the numbers we possessed, yet providing those we were missing.") %>
<%= s.say("C", "This means...") %>
<%= s.say("Crow", "We now possess all 6 coordinates, Captain. If you choose to trust them, we now know exactly where we are heading. Whenever you are ready, Captain.") %>
[[Continue|Chapter 3]]
<h1>Chapter 3</h1>
<h2><i><%= s.ACHS.C3.title %></i></h2>
<hr>
<%
s.unlockAch("C2");
s.TL = "PT";
s.CHAPTER = "3A";
s.NAME_TRANS.P = "The Prisoner";
s.setTLColor();
%>
<div#rest>
The Captain was fuming with rage. Ben was cowered in a corner of the Captain’s cabin like a drenched puppy.
<%= s.say("C", "What the fuck is this, Ben?! A prisoner aboard? And I have *no* clue for a whole month?! You have about thirty seconds to explain before I change my mind about trusting you and about this whole charade of a mission you set us out on.") %>
<%= s.say("Ben", "Well, I... You're right, Capt'n. I have no excuse. We just... we tried to force this fucker away from the ship, told him he's free, that he can go wherever he wanted. But he just wouldn't leave. Said it was his home or his study or something like that. And he had this strange way of speaking... Made us think that if we disturb him, we endanger our own well-being somehow, if you catch my drift. First time I saw him, in fact, and told ‘im to fuck off, his first words to me were somethin’ like...") %>
<a0.choice>"You must be Ben."</a>
<a0.choice>"What kind of sorcery is this?"</a>
<a0.choice>"So that's what a new chance feels like..."</a>
</div>
<div.editor>[[C3/A/2]]
<%
$(function () {
$("h1").hide().fadeIn(2000);
$("h2").hide();
$("hr").hide();
$("#rest").hide();
setTimeout(() => {
$("h2").fadeIn(2000);
setTimeout(() => {
$("hr").fadeIn(s.GLOBALS.TEXT_FADEIN_MS);
$("#rest").fadeIn(s.GLOBALS.TEXT_FADEIN_MS);
}, 2000);
}, 2000);
});
%>
<%
$(function () {
$(".choice").on("click", function () {
s.PRISONER_LINE = $(this).text().slice(1, -1);
story.show("C3/A/2");
});
});
%><%= s.say("C", "Hey, Crow. I was wondering, are there more entries in the Academy’s encyclopedia or are the ones I have all there are?") %>
<%= s.say("Crow", "There are certainly more, Captain. I will make sure to provide you with them, as soon as I locate them in the ship’s database. As a matter of fact, I found a couple while checking the ship’s software systems after the shockwave hit. Downloading them to your tablet now.") %>
<%= s.addEntry("On the Qa'id Honors Programme") %>
<%= s.addEntry("On ufologists and the precursor conspiracy") %>
<%= s.say("Crow", "I am quite certain that I will find more along the way. I will make sure to keep you updated.") %>
<%= s.say("C", "Nice. Thanks, Crow!") %>
<%= s.say("Crow", "You are most welcome, Captain.") %>
<% s.ASKED_ABOUT_ENCYCLOPEDIA = true %>
<%= story.render("Crow/Options") %>
<%= s.say("Ben", `..."${s.PRISONER_LINE}", or somethin’ like that. Freaked me out a bit, as you can imagine. Anyway, I just didn't want to disturb you with this nonsense. Truth is, he's quite a strange fellow. But Miss O'Malley is right; he *knows* stuff. She once consulted him, during the storm we crossed about ten days ago. Seemed he knew the way of the stars, the tides and the winds without even looking at them. To tell you the truth, I'm not sure whether Miss O'Malley would have gotten us out of this storm if it wasn't for him. And all this without setting foot outside of his sunless cell.`) %>
<%= s.say("C", "Cell?") %>
<%= s.say("Ben", "Well, he's a prisoner, Capt'n. That's how we call him, anyway. He doesn't have a name, or at least one that he cares to share. He's just *the prisoner*. He's locked up, in the brig down below. I'm sorry for all that, Capt'n. I shouldn't have kept you in the dark about that. I apologize. It won't happen again. There's nothing else I haven't shared with you, I promise. Rest of this galleon is as ordinary as it gets.") %>
The Captain started to calm down. It wasn't easy, but he slowly came to understand that such a high temperament wasn't helpful for anyone, especially during that time.
[["Who's "we", Ben?"|C3/A/3]]
<%= s.say("C", 'You keep saying "we". Who else knows about him?') %>
<%= s.say("Ben", "Me and Grace, as I said before, and a couple more fellas.") %>
<%= s.say("C", "Who else, Benjamin?") %>
<%= s.say("Ben", "Well, let me see... Ms Ruby, the cook; we've been asking her for a meal for him from time to time, and Mr Lockney, the quartermaster; holds all the keys after all. Others may have seen or heard him, but not to my knowledge.") %>
<%= s.say("C", "That's just... Wow. I'm speechless. I really am.") %>
<%= s.say("Ben", "Capt'n, I'm...") %>
<%= s.say("C", `Enough. It's ok. Let's say it's ok. I'll go talk to him. See what the others think of him maybe, about... "knowing" stuff. God, I can't believe the words that come out of my mouth. So desperate, are we? Asking a madman for directions to Wonderland? What the fuck is all this, Ben? What are we doing?`) %>
<%= s.say("Ben", "Capt'n, it's...") %>
<%= s.say("C", "Can I trust you?") %>
<%= s.say("Ben", "What..?") %>
<%= s.say("C", "Can I trust you, Ben?") %>
<%= s.say("Ben", "Of course. Of course you can, my dear boy.") %>
The Captain let a long and loud sigh come out with his breath.
<%= s.say("C", "Alright. I'll talk to him. Just because I trust you and Grace. But if nothing comes out of this, which I highly anticipate, I call this shit show off. We set sail for home. Deal?") %>
<%= s.say("Ben", "Yes, Capt'n! Deal! I know you don't, but I have a good feeling about this. Good luck!") %>
<%= s.say("C", "Alright. Here goes nothing... Fuck me.") %>
Ben swiftly left the cabin. The Captain [[took a look around|Captain's Cabin]], in an effort to calm himself down.
<% s.CHAPTER = "3B" %>
<h1>The Galley</h1>
<hr>
The ship's galley was a cozy, compact room up near the bow. It lacked proper ventilation, which meant a mix of conflicting scents from various dishes hung in the air. The only way in or out, for people and air alike, was the door to the [[lower deck main corridor|Lower Deck]].
In one corner, a cluttered [[cooking bench]] held pots, pans, and utensils. The walls were adorned with hanging cookware, creating a bit of a racket. In the center of the room, a big pot of soup bubbled over an open flame. [[Eleanor Ruby|Eleanor]], the ship's cook, was hard at work, stirring and seasoning.
<% if (s.CHAPTER < "4" && !s.BRIG_UNLOCKED && !s.HAVE_BRIG_KEY) { %>
The door to the brig was locked.
<% s.NEED_BRIG_KEY = true %>
[[Back|Lower Deck]]
<% } else if (s.CHAPTER < "4" && !s.BRIG_UNLOCKED && s.HAVE_BRIG_KEY) { %>
The Captain used the brig's key. The door was now unlocked.
[[Enter|Brig]]
<% s.BRIG_UNLOCKED = true %>
<% } else { %>
<h1>The Brig</h1>
<hr>
The brig was a small, dimly lit chamber deep within the bowels of the ship. Two narrow cells dominated the space, their walls covered in a layer of oppressive darkness and dampness. The air was thick with the musty scent of mold, and the only source of illumination was a feeble ray of light that pierced through a crack in the wall, casting eerie shadows across the floor.
In the far corner of one of the two cells, barely discernible in the shadow, stood the <% if (!s.MET_PRISONER) { %>[[Prisoner|C3/C/1]]<% } else { %>[[Prisoner]]<% } %>, sitting on the floor, his silhouette a haunting presence in the gloom, his features hidden from view. <% if (s.CHAPTER > "5C" && s.SPARE_JACK) { %>Jack Lockney lay on the floor of the other cell, deep in slumber.<% } %>
Opposite to the cell's door, a rickety staircase led back to the [[lower deck main corridor|Lower Deck]].
<% } %>
<div#credits-container.flex-container style="justify-content: space-evenly; position: fixed; top: 0; left: 0; width: 100%; height: 100%">
<div.flex-container>
<h1>The Ship</h1>
<br>
<i>An interactive novel</i>
<i>about reaching out to others</i>
<i>and finding oneself</i>
</div>
<hr style="width: 75%">
<div#author.flex-container>
<span>~ Designed, written and coded by ~</span>
<strong>Sotiris Niarchos (sot.niarchos [at] gmail.com)</strong>
</div>
<div#testers.flex-container>
<span>~ Many, many thanks to me testin' crewmates (alphabetically) ~</span>
<strong>Eleni Mathioulaki</strong>
<strong>Panagiotis Niarchos</strong>
<strong>George Papadopoulos</strong>
<strong>John Torakis</strong>
</div>
<div#review.flex-container>
<span>~ Philological review by ~</span>
<strong>Panagiotis Niarchos</strong>
</div>
<div#tools.flex-container>
<span>~ Tools & sources used ~</span>
<span><strong>Twine 2.6.2 for Linux & Snowman 2.0.3</strong> (with some slight tweaks)</span>
<span>Dice and button icons by <strong>Game-icons.net</strong> (<tt>https://game-icons.net/</tt>)</span>
<span>Cover / Main Menu image generated by <strong>DALL·E 2</strong></span>
</div>
<div#story.flex-container>
<span>Started in Athens (Summer 2023)</span>
<span>Continued in Crete and Karpathos</span>
<span>Finished in Utrecht (Autumn 2023)</span>
</div>
<div#dedication.flex-container>
<i>Dedicated to Eleni</i>
<i>My firm anchor in a sea of uncertainty</i>
</div>
<div.flex-container>[[Back to Main Menu|Main Menu]]</div>
</div>
<%= s.say("C", "So, Grace. Tell me about this... *guest* of ours. How...") %>
<%= s.say("Grace", "Captain, I’m really sorry. I didn’t know. I thought Ben...") %>
<%= s.say("C", "Save it, Grace. We talked it through with Ben. How did you meet him? And what happened during this storm the other day?") %>
<%= s.say("Grace", "As you remember, I went with Ben the day he stole the ship from the Spanish.") %>
<%= s.say("C", "*Commandeered*, please. Sounds better.") %>
<%= s.say("Grace", `Yeah, right... *commandeered* the ship from the Spanish. After the others had it secured, Ben and I were the first to go below deck to check the rest of the ship. And there we saw him. Ben tried to set him free -he could be a bit more polite, I guess-, and then he said to him something like "${s.PRISONER_LINE}". I might be mistaken, but it was something like that. He was so... I don’t know... the way he was looking at us, the way he spoke... so *eerie*...`) %>
<%= s.say("C", "Yeah, I know all that, Ben filled me in. Tell me about the storm.") %>
<%= s.say("Grace", "Captain, that day, for the first time since we set sail, I thought we might not make it. That we could die. And precisely at that moment, when my death, our deaths, came to my mind, I felt compelled to talk to him again. It was like these two thoughts, of death and the Prisoner, came to me at the exact same time, the one causing the other to pop into my head.") %>
<%= s.say("C", "What did he say?") %>
<%= s.say("Grace", "Almost nothing. Me neither. I ran down the stairs to the brig, and when I stopped right outside the door of his cell, trying to catch my breath, I realized I had nothing to tell him. But as it turned out, I didn't need to. He gently took my almanac and ephemeris, showed me specific passages, tides, and winds. He focused my attention on precisely what I needed to know given the circumstances. You know the rest. Everyone thinks I'm a great skipper now, but the truth is, without him organizing my thoughts and guiding me, we might not have made it.") %>
<%= s.say("C", "That’s... That doesn’t...") %>
<%= s.say("Grace", "Make sense? I know, Captain. Believe me, I do. Right after we were in the clear, I went down again, this time to ask him *how*, *how* did he know. He once again said nothing. He only showed me a passage in my almanac, and I drew a circle around it. I read it a lot of times since then, but I can't make anything of interest or importance out of it. He could have pointed at anything in the almanac, for all I know.") %>
<%= s.say("C", "I see. I’ll definitely need some time to process all this.") %>
<%= s.say("Grace", "I know, Captain. I've been tormented by it since that day. I hope you find it easier to... accept.") %>
<% s.ASKED_GRACE_ABOUT_PRISONER = true %>
<%= story.render("Grace/Options") %>
<%= s.say("C", "Hello, boy.") %>
<%= s.say("Billy", "Ahoy, Cap'n! Fancy another round, maybe? I'll be gentle with ye this time round, promise!") %>
<%= s.say("C", "Maybe later, listen... I was wondering if you've heard any noises coming from down below... Anywhere around the *brig*...") %>
The Captain felt that he could have made a much smoother attempt.
<%= s.say("Billy", "Nah, Cap'n. Below decks ain't me thing, ye know? Most days I even sleep here, right by me barrel. Below is very... very *poky*. Most nights I find it hard to breathe down there. So up here it is, with me cups and dice on the side and dear Grace's stars above... Couldn't ask fo' more!") %>
<% s.ASKED_BILLY_ABOUT_PRISONER = true %>
<%= story.render("Billy/Options") %>
<% if (s.CHAPTER < "5") { %>
The door to the crew's quarters was locked.
[[Back|Lower Deck]]
<% } else if (s.CHAPTER < "5C") { %>
The crew's quarters, a cozy nook below deck, housed rows of narrow bunk beds neatly made with simple blankets. The air was salty and carried a hint of well-worn clothes. Personal items occupied the shelves, adding a touch of personality to this otherwise dark and damp place.
The Captain felt like taking a look at...
<% if (!s.CHECKED_BILLY_SPOT) { %>
[[Billy's spot]]
<% } %>
<% if (!s.CHECKED_GRACE_SPOT) { %>
[[Grace's spot]]
<% } %>
<% if (!s.CHECKED_BEN_SPOT) { %>
[[Ben's spot]]
<% } %>
<% if (s.CHECKED_BILLY_SPOT && s.CHECKED_GRACE_SPOT && s.CHECKED_BEN_SPOT) { %>
[[Jack's spot]]
<% } %>
<% } else { %>
The Captain didn't expect to find anything of interest in the crew's quarters anymore. There was no ongoing crisis that he knew of, and the whole Jack business had made everyone quite more sensitive in matters of privacy.
[[Back|Lower Deck]]
<% } %>
<div.flex-container style="justify-content: space-evenly; position: fixed; top: 0; left: 0; width: 100%; height: 100%">
<div.flex-container>
<span>This story does <strong>not</strong> feature an autosave system.</span>
<span>You can put a bookmark (aka "save your game") whenever this icon on the left of the screen is visible.</span>
<span>By clicking on it, you will be able to download a bookmark file; keep it somewhere safe.</span>
<strong>Make sure to do this if you are about to close this tab/browser window!</strong>
<span>You can then continue from where you left off from the main menu ("Continue from a bookmark" button).</span>
</div>
<div.flex-container>
By refreshing this page you will go back to the Main Menu and <strong>LOSE ALL PROGRESS.</strong>So, unless you've saved a bookmark, don't do that.
</div>
<div.flex-container>
Lastly, please also note that this story is practically <strong>UNPLAYABLE</strong> on a mobile device. You have been warned.
</div>
[[ OK |Intro]]
</div>
<svg class="menu-button-icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path d="M0 0h512v512H0z" fill="#000" fill-opacity="1"></path><g class="" style="" transform="translate(0,0)"><path d="M57.594 43v242.563l80 30.53V292c-22.504-3.217-45.065-8.633-62.53-26.844l13.5-12.937c12.15 12.667 29.032 17.263 48.28 20.374L110.656 55.03C93.3 51.725 75.492 48.1 57.594 43zm397.125.03c-65.178 17.392-138.354.102-191.22 70.814v208.812c19.795-29.15 45.443-40.866 70.72-46.53 33.914-7.603 66.18-7.163 91.5-27.626l11.75 14.53c-31.256 25.263-68.25 24.386-99.158 31.314-29.295 6.566-53.978 17.63-72.25 63.187l188.657-71.967V43.03zM128.81 49.28l27.407 228.157.06.563V494.906l19.94-39.28 20.468 38.155V296.814L168.563 57.5l-39.75-8.22zm60.47 24.25l25.593 217.782c4.175 2.3 8.258 4.96 12.188 8.063 6.452 5.097 12.412 11.36 17.75 18.97V109.5c-15.496-17.475-34.402-28.327-55.532-35.97zM20.5 74.376v239.813l6.125 2.25 110.97 40.78v-19.906l-98.407-36.156V74.376H20.5zm452.594.03v226.75l-216.938 79.69-40.78-14.97v38.28c23.21 8.03 58.078 6.813 86.25-2.53v-17.563l184.03-67.625 6.125-2.25V74.407h-18.686zm-257.72 239.532v31.813l27.564 10.53c-7.04-20.847-16.565-33.66-27.438-42.25-.04-.03-.084-.06-.125-.092z" fill="#fff" fill-opacity="1"></path></g></svg><div.flex-container style="justify-content: space-evenly; position: fixed; top: 0; left: 0; width: 100%; height: 100%">
<div.flex-container>
<h1>Load successful</h1>
<h3>Chapter <span#cn>-1</span>: <span#ct>Chapter Title</span></h3>
<h4 id="location">Where?</h4>
<div>Bookmark timestamp: <strong#timestamp>??:??:??</strong></div>
<div>Time read/played: <strong#time></strong></div>
<div>Achievements: <strong><span#my-achs>-1</span> / <span#all-achs>-1</span></strong></div>
<div>Story completion: <strong><span#compl>-1</span>%</strong></div>
</div>
<div.flex-container><a0#ok>Continue</a></div>
</div>
<%
$(function () {
let chapterNum = s.CHAPTER[0];
let chapterTitle = s.ACHS["C" + chapterNum].title;
let complPerc = calcCompletionPercentage();
$("#cn").html(chapterNum);
$("#ct").html(chapterTitle);
$("#location").html(
story.passages[story.history[story.history.length - 1]].name
);
$("#timestamp").html(s.SESSION_STARTED_AT.toLocaleString());
$("#time").html(msToTimestring(s.PLAYTIME));
let achs = Object.values(s.ACHS);
$("#my-achs").html(achs.filter((a) => a.unlocked).length);
$("#all-achs").html(achs.length);
$("#compl").html(complPerc);
$("#ok").on("click", () =>
story.show(story.history[story.history.length - 1], true)
);
});
function calcCompletionPercentage() {
let storyPassagesIds = story.passages
.filter((p) => p.tags.includes("NO_INV"))
.map((p) => p.id);
let visited = storyPassagesIds.filter((pid) => hasVisited(pid)).length;
return Math.floor((visited * 100) / storyPassagesIds.length);
}
function msToTimestring(duration) {
const portions = [];
const msInHour = 1000 * 60 * 60;
const hours = Math.trunc(duration / msInHour);
if (hours > 0) {
portions.push(hours + "h");
duration = duration - hours * msInHour;
}
const msInMinute = 1000 * 60;
const minutes = Math.trunc(duration / msInMinute);
if (minutes > 0) {
portions.push(minutes + "m");
duration = duration - minutes * msInMinute;
}
const seconds = Math.trunc(duration / 1000);
if (seconds > 0) {
portions.push(seconds + "s");
}
return portions.join(" ");
}
%><%= s.say("Jack", "Ahoy, mate. How's it goin'?") %>
<%= story.render("Jack/Options") %>
<% if (s.CHAPTER === "5B" && !s.ASKED_JACK_MISSING) { %>
[["Have you been missing any stuff lately?"|Jack/Missing]]
<% } %>
<% if (s.CHAPTER === "3B" && s.HEARD_JACK_BEN && s.NEED_BRIG_KEY) { %>
[["I need the key to the brig"|C3/B/1]]
<% } %>
[["Tell me a bit about yourself"|Jack/Story]]
<% if (s.HEARD_JACK_STORY && !s.HEARD_JACK_BEN) { %>
[["How do you know Ben?"|Jack/Ben]]
<% } %>
[["Goodbye"|Jack/Bye]]<%= s.say("C", "Goodbye for now, Mr Lockney.") %>
<%= s.say("Jack", "Bye, mate.") %>
[[Leave|Main Deck]]
<%= s.say("C", "I don’t really know you, Mr Lockney. Could you tell me a little bit about yourself?") %>
<%= s.say("Jack", `Not much to know, mate. Well... I've been a fisherman for most of my youngster years, worked alongside my father on a small fishing vessel. I wanted to sail for as long as I can remember. Become an adventurer of the high seas, savvy? Till a fuckin’ storm took everythin’ away. I made it to the shore, but not my father. And what I was left with was a mother, two sisters and a fuckin’ household on my shoulders. So, I took odd jobs on various ships and soon became well-acquainted with the sea's rough and tumble side.
Wasn’t long before I figured I had a knack for numbers and logistics, managin’ supplies and such, savvy? Didn’t go unnoticed by my captain then, and after his quartermaster died of yellow fever, I took his place. Changed many captains, crews and ships since then, but always as a quartermaster. Keys, supplies and logistics are kinda my thing, savvy? Not what I imagined for myself, but it will do, as long as it pays this mess back home. And it does, more years now than I care to count, savvy?`) %>
The Captain stood still as if waiting for something more.
<%= s.say("Jack", "That’s about it, mate. Sorry if I didn't keep your interest or somethin'.") %>
<% s.HEARD_JACK_STORY = true %>
<%= story.render("Jack/Options") %>
<%= s.say("C", "How do you know Ben, Mr Lockney?") %>
<%= s.say("Jack", "I don’t, actually. Went to an inn the other day, to have a drink. Was in between jobs. And there he was, sitting beside a table, hiring people for your little trip. When I spoke to him, he actually told me that he was only looking for a quartermaster, and that every other role was filled in by “people of his”. If that wasn’t fate, I don’t know what is. We were destined to travel together, you and I, mate!") %>
<%= s.say("C", "Right. *Mate*.") %>
<% s.HEARD_JACK_BEN = true %>
<%= story.render("Jack/Options") %>
<%= s.say("C", "It seems that the door to the brig is locked, Mr Lockney.") %>
<%= s.say("Jack", "Yeah, so?") %>
<%= s.say("C", "So, I would like it unlocked, if you’re so inclined.") %>
<%= s.say("Jack", "Look mate, keys are *my* job around here, and yours is, well... I don’t know... *captainin’* or somethin’. It is locked because Mr Bones asked me to keep it locked, savvy? Why don’t you go have a chat with your first mate and figure things out with him?") %>
[["I'll go ask Ben"|C3/B/2]]
[["Let me rephrase this..."|C3/B/3]]
<%= s.say("C", "Alright, I’ll go talk to Ben. But a small piece of advice. Watch your tongue when you address your superiors, “mate”. I’m your Captain, not your friend.") %>
Jack didn’t respond. He just looked down for a bit, and then around.
<%
s.CHAPTER = "3C";
s.KIND_TO_JACK = true;
%>
<%= story.render("Jack/Options") %>
<%= s.say("C", "Look here, you little scumbag. I’m your Captain, you understand? Your fucking *Captain*! I’ve indulged your attitude long enough! Now, hand me over the key or I'll have you acquainted with the brig as well as anyone can.") %>
<%= s.deterRel("Jack", "was offended by the Captain's words") %>
<%= s.say("Jack", "Alright, alright man. Jesus. Didn’t have to go this way, mate. Here’s the damn key. Just... just calm down, ok?") %>
The Captain took the key to the brig and put it in his satchel.
<%
s.i.pt.push({
name: "The brig's key",
description:
"A simple, rusty brass key. It opens the door to the ship's brig. Acquired from Jack, with a little bit of... convincing.",
});
s.HAVE_BRIG_KEY = true;
%>
<%= s.say("C", "Don’t you fucking tell me to calm down. That was the last time I allowed this kind of insubordination aboard my ship. Next time, I won’t be so kind. *Savvy, mate*?") %>
<%= s.say("Jack", "Yeah mate, alright. Everythin’s ok.") %>
<%= s.say("C", "Well, I hope it is.") %>
The Captain felt like talking to Ben about all this as soon as possible.
<%
s.CHAPTER = "3C";
s.KIND_TO_JACK = false;
%>
<%= story.render("Jack/Options") %>
<% if (s.KIND_TO_JACK) { %>
<%= s.say("C", "This lovely character you brought aboard, Mr Lockney, won’t give me the key to the brig because he wants your permission or something.") %>
<%= s.say("Ben", "Ahh... Just give me a moment, Capt’n.") %>
Ben left towards the main deck. A few moments later, he returned and handed over a key to the Captain.
<%
s.i.pt.push({
name: "The brig's key",
description:
"A simple, rusty brass key. It opens the door to the ship's brig. Acquired from Jack, through Ben.",
});
s.HAVE_BRIG_KEY = true;
%>
<% } else { %>
<%= s.say("C", "This lovely character you brought aboard, Mr Lockney, wouldn’t give me the key to the brig because he wanted your permission or something. I had to pull rank to get him to hand it over.") %>
<% } %>
<%= s.say("Ben", "I’m really sorry for that, Captain. He’s a tough character, that one. I was kind of desperate, you know? Hadn’t found a quartermaster and we were settin' sail the next day! So, I swallowed my pride and did what a newcomer around these parts would do: stationed myself at a desk in the inn, hoping for someone to come by. And well... *he* did.") %>
<%= s.say("C", "I hope there won’t be any further instances of insubordination during our voyage, Ben.") %>
<%= s.say("Ben", "No Captain, certainly not. I’ll talk to him. He just... As I’ve come to understand him, he has a lot of trust issues. Over the years, he's bounced around from quartermaster position to quartermaster position, and I suspect he's had trouble fittin’ into the chain of command. For some reason he tends to follow the orders of the person who brought him on board, however, which in this case is me. Unfortunately, that means he sometimes disregards everyone else, including you, Capt’n.") %>
<%= s.say("C", "I see. I hope that you’ll see to this whole situation, won’t you, Ben?") %>
<%= s.say("Ben", "Most certainly, Capt’n! You can count on me!") %>
<% s.ASKED_BEN_ABOUT_JACK = true %>
<%= story.render("Ben/Options") %>
A substantial cooking bench, its surface covered in an array of pots, pans, and culinary tools, all organized under the experienced direction of Eleanor Ruby, the ship's seasoned cook. A large pot of soup simmered at its center, filling the air with dizzying aromas.
<% if (s.PAINTING_GIVEN) { %>
Above the bench, a peculiar painting of unknown origins hung; a gentle source of solace, a bittersweet memorial to Eleanor's long-lost son.
<% } else { %>
Above the bench, a small rectangular space on the wooden wall gleamed with a pristine cleanliness, to the extent that the wood's color had lightened significantly.
<% } %>
<% s.OPT_LOCS[passage.name] = true %>
<% if (Object.keys(s.OPT_LOCS).length === 7) { %>
<%= s.unlockAch("opt_locs") %>
<% } %>
[[Back|Galley]]
<%= s.say("Eleanor", "Good day, Captain dear. Are you hungry?") %>
<%= story.render("Eleanor/Options") %>
<% if (s.CHAPTER === "5B" && !s.ASKED_ELEANOR_MISSING) { %>
[["Have you been missing any stuff lately?"|Eleanor/Missing]]
<% } %>
<% if (s.CHAPTER === "3D" && s.HEARD_ABOUT_JEREMIAH) { %>
[["May I have a bowl of soup?"|C3/D/1]]
<% } %>
<% if (!s.HEARD_ELEANOR_STORY) { %>
[["Tell me a bit about yourself"|Eleanor/Story]]
<% } else { %>
[["What happened to Jeremiah?"|Eleanor/Jeremiah]]
<% } %>
[["Goodbye"|Eleanor/Bye]]
<%= s.say("C", "That would be all for now, Ms Ruby. Have a good day.") %>
<%= s.say("Eleanor", "You too, Captain dear. And remember to eat somethin' once in a while, ok? You seem to be gettin' thinner by the day...") %>
[[Leave|Galley]]
<% if (s.CHAPTER < "3F") { %>
<%= s.say("P", "Nice to see you again, Captain. How may I be of service?") %>
<% } else { %>
<%= s.say("P", "...") %>
<% } %>
<%= story.render("Prisoner/Options") %>
<%= s.say("P", "Greetings, Captain. I was starting to wonder when you would visit me. It has been thirty days already.") %>
<%= s.say("C", "Just learned about your existence, mate.") %>
<%= s.say("P", "My existence. Mate. This will be fun. I am ready to answer any questions you may have, Captain.") %>
<%= s.say("C", "You talk a lot for someone who’s so well known across my crew for the exact opposite.") %>
<%= s.say("P", "Across your crew? Oh, Captain. I don’t think I’m *that* popular. Only a handful of your crew know about me and the rest never wander around these parts of your ship. And I can’t blame them. But it’s better this way. Easier. To think, to understand...") %>
<%= s.say("C", "To think and understand *what*, for fuck’s sake? *What*?! Who are you?") %>
<%= s.say("P", "That was the most irrelevant question you could possibly start with.") %>
The Prisoner suddenly paused. The Captain could see the outline of his head through the shadows turning swiftly in various directions, as if he was trying to grasp a distant sound. The Captain detected a hint of anxiety in the Prisoner’s breath. After a while, he focused his attention back to the Captain.
<%= s.say("P", "Do you wish to try again?") %>
<%= s.improveRel("P", "finally met the Captain") %>
<%= story.render("Prisoner/Options") %>
<% s.MET_PRISONER = true %>
<% if (s.CHAPTER === "6B" && s.EXAMINED_MEDALLION && !s.GIVEN_MEDALLION) { %>
[["Do you know what this medallion is?"|Prisoner/Medallion]]
<% } %>
<% if (s.CHAPTER === "5D") { %>
[["That was the choice?"|C5/D]]
<% } %>
<% if (s.CHAPTER === "3C" && s.ASKED_PRISONER_ABOUT_GUIDANCE) { %>
[["Will you help me?"|C3/C/2]]
<% } %>
<% if (s.CHAPTER === "3E") { %>
[["Here's your soup"|C3/E/1]]
<% } %>
<% if (!s.ASKED_PRISONER_ABOUT_NAME) { %>
[["What's your name?"|Prisoner/Name]]
<% } %>
<% if (s.ASKED_PRISONER_ABOUT_NAME && !s.ASKED_PRISONER_ABOUT_FREEDOM) { %>
[["Why did you stay aboard?"|Prisoner/Free]]
<% } %>
<% if (s.ASKED_PRISONER_ABOUT_FREEDOM && !s.ASKED_PRISONER_ABOUT_GUIDANCE) { %>
[["...guide me?"|Prisoner/Guidance]]
<% } %>
[["Goodbye"|Prisoner/Bye]]
<%= s.say("C", "Goodbye, uh... man.") %>
<%= s.say("P", "No, not goodbye, Captain. Until we meet again.") %>
[[Leave|Brig]]
<%= s.say("C", "What’s your name, man? Do you even have one?") %>
<%= s.say("P", "Oh yes... Yes, I do. Many, in fact. Too many to count at this point.") %>
The Prisoner started looking around in search of that sound again.
<%= s.say("P", "But if you are asking for my *original* name, the *first* one, then I am afraid I will have to disappoint you. It has been so long that I cannot even remember how it *felt* like, let alone how it was pronounced or spelled. Therefore, sticking to “the Prisoner” is quite to my liking, I confess. Precise and descriptive, at least. Traits that names seldom possess.") %>
<%= s.say("C", "So you’re but a nutcase, ain't you? Is that it?") %>
The Prisoner’s teeth shone brightly under his smile, through the shadows of his cell.
<%= s.say("P", "Let us just say that we have different... *perspectives*, Captain, and just leave it at this.") %>
<%= s.say("C", "Different perspectives? About what?") %>
<%= s.say("P", "Everything.") %>
<% s.ASKED_PRISONER_ABOUT_NAME = true %>
<%= story.render("Prisoner/Options") %>
<%= s.say("C", "Why didn’t you leave when Ben commandeered the ship? He set you free, and yet here you are.") %>
<%= s.say("P", "Well, *that* is an interesting question. But, as it happens with most of the interesting ones, it is quite hard to answer. I *may* have a story before my capture by the Spanish. Or I may not. The truth is, I do not know anymore. I cannot remember. I do not even know if I was their enemy or whether I have committed any sort of crime according to their laws and culture. The only thing I know is that Ben and Grace were the ones to draw me back from the abyss and grant me a purpose.") %>
<%= s.say("C", "And what might that purpose be?") %>
The Prisoner smiled again.
<%= s.say("P", "But of course, to *guide you*, Captain. And, answering your initial question, how could I leave after this?") %>
<% s.ASKED_PRISONER_ABOUT_FREEDOM = true %>
<%= story.render("Prisoner/Options") %>
The Captain’s rage was slowly stepping down. Curiosity, intrigue started taking its place.
<%= s.say("C", "What? To guide me? Guide me how?") %>
<%= s.say("P", "Did not Grace ask you to pay me a visit?") %>
<%= s.say("C", "What you... Ok, lucky guess. Yes. Yes, she did.") %>
<%= s.say("P", "Good. Very good. Then why don’t you move on past your fear - your inability to comprehend me, that is - and ask me your *actual* question. Do not let uncertainty, the fear of losing control, guide your thoughts and actions, Captain. Move through it like a ship sails through the fog. Because, at the end, it is nothing more than this; harmless, insubstantial fog. Everything that actually *is*, everything that you may hope to ever know or gain, lies beyond it. Therefore, let me implore you once again. *Move through*. Do not be feared by it. Let it touch you. It could never harm you. Get to the other side, Captain. After all, que será, será.") %>
<%= s.say("C", "That... that was Spanish, wasn’t it?") %>
<%= s.say("P", "Grammatically incorrect, but yes.") %>
The Captain felt the Prisoner’s words penetrating his thoughts - and through his defenses. He came to realize that he had nothing to hide. Contrary to what the others’ words had made him believe, he could sense it deeply in his heart: the Prisoner was here to help. Why or how, it was irrelevant. Nothing but some harmless fog. And, in any case, there was no harm at asking - and, as a matter of fact, no other choice. The Captain decided to go along with it, to navigate this haze for the time being. After all, que será, será. Whatever this means.
<% s.ASKED_PRISONER_ABOUT_GUIDANCE = true %>
<%= story.render("Prisoner/Options") %>
<%= s.say("C", "Alright. Ok. I’ll play this game and see where it goes. So... is there any way... I don’t know... Can you help me... I mean us... somehow?") %>
The Prisoner seemed to enjoy every single word that came out of the Captain’s mouth.
<%= s.say("P", "But... of course, Captain. Of course I *can* and I *will* help you. But allow me first to warn you. You are *not* ready, yet.") %>
<%= s.say("C", "What does that mean?") %>
<%= s.say("P", "The place you seek, well... You are not ready yet. But you will be. Oh, you *will* be.") %>
<%= s.say("C", "Are you threatening me in some vague and irritating way?") %>
<%= s.say("P", "Not at all, Captain. I am just stating the facts. You need to be ready. And when you are, you may even find out that it is the Mountain that will come to Mohammed, and not the other way around.") %>
<%= s.say("C", "Ok, I’ve had enough of this. See you, mate.") %>
<%= s.say("P", "Captain, wait.") %>
<%= s.say("C", "What?") %>
<%= s.say("P", "May I have some soup?") %>
[["You... some... *what*?"|C3/C/3]]<%= s.say("C", "You... some... *what*?") %>
<%= s.say("P", "What I would love now would be a bowl of Ms Ruby’s unsurmountable onion soup. If you are so kind as to bring me some, I promise that all your questions will be answered. And if not by me, certainly by the events that will unfold, but only after I have had my bowl of warm delicious soup. It must be done, you see. I may even have some items to give to you that may or may not prove themselves useful for your voyage. What say you, Captain? Deal?") %>
The Captain remembered about the fog. That he actually had nothing to lose. For some unknown reason, this interplay with the Prisoner was weirdly enjoyable. A bowl of soup in exchange for some unknown items and his help. Like a stupid self-absorbed game of sorts. But he didn’t really mind. Someway, somehow, in all this absurd nonsense, the Prisoner made him feel at peace. He had something small and reachable to focus on - bringing him that warm bowl of soup -, and something small and reachable to wait for - a couple of thingies and his potential help. It was the first time since he embarked on this witch hunt of a voyage that he could really silence all these inner voices criticizing his choices, his goals, his life. He was just having fun.
Or, maybe, all of this was just him over-analyzing his current situation. It could just be the case that he had finally found a friend. Or maybe someone even more than a friend: A person with interesting, intriguing and new things to say.
<%= s.say("C", "Ok, deal. I’ll bring you your bowl of soup. And then I expect some things from you.") %>
<%= s.say("P", "Splendid, Captain. Believe me, you... *we* are almost there. When you come back, you will only have one step remaining. There may be more things that need to be done, but these are neither in my hands nor yours.") %>
While uttering these last few words, the Prisoner’s right index finger emerged from the shadows, piercing through the sole light beam of the brig, pointing upwards.
<%= s.say("P", "Anyway. I will be waiting, Captain. What an interesting path we have lying ahead.") %>
<%= s.say("C", "Right...") %>
<% s.CHAPTER = "3D" %>
<%= story.render("Prisoner/Options") %>
<%= s.say("C", "How are you on this fine day, Ms Ruby?") %>
<%= s.say("Eleanor", "Why thank you so much for askin’, Captain dear! I’m fine, how about you?") %>
<%= s.say("C", "Fine, fine... Listen, we haven’t been talking a lot and I wanted to ask you about your story, you know? How did you end up along all these halfwits and scallywags?") %>
They shared a slightly awkward laugh.
<%= s.say("Eleanor", "Well, Captain dear... My story is not a very pleasant one. I would hate dampenin’ your spirits.") %>
<%= s.say("C", "Please. I’d love to hear it.") %>
<%= s.say("Eleanor", `Alright, then. I wasn’t always a sea cook, you see. I had a family once. A little boy, actually. Jeremiah. Jeremiah is... *was*... his name. We were livin’ together in Nassau. His father set sail shortly before his birth and I never heard from him again.
Jeremiah was a... peculiar boy. He didn’t do well with the other kids around the neighborhood. He would often cry for no reason, become really aggressive when somebody touched him, even by accident, he would spend hours not talkin' nor respondin' to anybody for no apparent reason, stuff like that. But there were two things he loved: my cookin’ and his drawings. And oh, Captain dear, was he a *good* painter. When he was a little boy he was drawin', you know, your typical stick figures, houses, stuff like that. But by the time he was 12 or 13 he could paint the most faithful copies of almost any painting he could get his hands on. And by the time he was 16, well... He painted like a true artist, you know?`) %>
Eleanor pointed on the wall above the cooking bench.
<%= s.say("Eleanor", "I try to keep this wall as clean as possible. I wipe it down like three or four times a day. When I'm cookin' or finished with my duties, I take a few moments to look at it, and I imagine seein' my boy's paintings and drawings hangin' here, beautifully framed and all. It's... Oh, dear Captain...") %>
The Captain noticed a tiny tear rolling down Eleanor's left cheek.
<% s.HEARD_ELEANOR_STORY = true %>
<%= story.render("Eleanor/Options") %>
<%= s.say("C", "What happened to your boy and his paintings, Ms. Ruby?") %>
<%= s.say("Eleanor", `One day, I was out shoppin’ in the market. The neighbors told me that Jeremiah invited some kids to our house to show them his paintings. When they saw them, they laughed at him and called him names. Their voices carried across our street. Then, there were strange noises, things breakin’, and screams. After a while, one of the boys came out with blood on his face, crying, "He killed him! He killed him!" Moments later, a fire started, and it engulfed my whole house. None of the other kids made it out, neither did Jeremiah.
The boy who came out said to the neighbors later that when my Jeremiah showed them his paintings, they laughed, took them by force, and threw them in our fireplace. Jeremiah snapped. The boy said he hit one of the others with a candlestick, bashin’ his skull. Chaos followed, and the fire started to spread. That's all the boy told. That's all I know.`) %>
<%= s.say("C", "Eleanor... I... I don't know what to say.") %>
<%= s.say("Eleanor", "No need to say anythin’, Captain dear. The Lord watches over us all, and I'm certain He has plans for my little boy. The only thing I wish was that somethin’ was saved from the fire. Something of his. I have nothin’, Captain. Not a single drawing. The only thing I have to remember my boy by is this pristine wall and my imagination fillin’ it from time to time.") %>
<%= s.say("C", "I really hope I could help ease your pain, dear Ms. Ruby. If there is anything you need, anything at all, at any time, please come and talk to me.") %>
<%= s.say("Eleanor", `I... thank you, Captain dear. I really appreciate that. And I never got to thank you for lettin’ me join your crew "of halfwits and scallywags."`) %>
This time, the shared laugh was not awkward at all.
<%= s.say("C", "Ben; this is the man you should thank.") %>
<%= s.say("Eleanor", "All these happened a few days before we set sail, you know? I had nowhere to go, nothing to eat, nowhere to sleep. Hadn't it been for Ben, you and this ship, I would be a god-forsaken beggar on the streets, with nothin’ but the memory of my dear Jeremiah, crushin’ my heart. So, once again, Captain dear, I thank you for everythin’.") %>
<% if (!s.HEARD_ABOUT_JEREMIAH) { %>
<%= s.improveRel("Eleanor", "appreciates how considerate and caring the Captain is towards her") %>
<% } %>
Eleanor's face suddenly became quite judgmental. The Captain felt like he was receiving a bad look from his mother.
<%= s.say("C", "What... what is it?") %>
<%= s.say("Eleanor", "You should eat a bit more, Captain dear. If you were thinner, you wouldn't exist!") %>
<% s.HEARD_ABOUT_JEREMIAH = true %>
<%= story.render("Eleanor/Options") %>
<%= s.say("C", "Dear Ms. Ruby, the scent of the soup you're preparing is delightful. May I have a bowl, please?") %>
<%= s.say("Eleanor", "Certainly, Captain dear! Is it just for you?") %>
<a0#truth.move-on>"No, for the Prisoner."</a>
<a0#lied.move-on>"Yes, for me."</a>
<div.editor>[[C3/D/2]]</div>
<%
$(function () {
$(".move-on").on("click", function () {
s.LIED_TO_ELEANOR = $(this).attr("id") === "lied";
story.show("C3/D/2");
});
});
%>
<% if (s.LIED_TO_ELEANOR) { %>
<%= s.say("C", "Umm... Yes, for me.") %>
<%= s.say("Eleanor", "Perfect! I was wonderin’ when you were goin’ to have your next meal, Captain dear! It’s been a while, you see...") %>
<% } else { %>
<%= s.say("C", "Actually, it is for the Prisoner. I believe you’ve met him.") %>
<%= s.say("Eleanor", `Oh, dear. I don’t like him one bit. He gives me the creeps. I once had to bring him his dinner myself and when I laid the plate on the floor, he grabbed my hand and he told me "Do not mourn, dear cook. All that is lost, will be found." Needless to say, I’ve never set foot in the brig again.`) %>
<%= s.say("C", "Yes, I know what you mean. But I’m trying to earn his trust because I’m afraid he's the only solution to our current situation.") %>
<%= s.say("Eleanor", "What do you mean, Captain dear?") %>
<%= s.say("C", "Ahh... It’s a very, *very* long story, Ms Ruby.") %>
<%= s.say("Eleanor", "No worries, Captain. If you think it’s for the better, that’s fine by me.") %>
<% } %>
Eleanor then graciously filled a bowl with her famous onion soup and handed it to the Captain.
<%= s.say("Eleanor", "Here you are, Captain dear.") %>
<%= s.say("C", "Thank you so much, Ms Ruby.") %>
<% s.CHAPTER = "3E" %>
<%= story.render("Eleanor/Options") %>
<%= s.say("C", "Here’s your soup, mate.") %>
The Captain placed the bowl on the floor, a few inches beyond the bars that separated him from the Prisoner. The latter smiled once again through the shadows, and with a slow yet assured gesture, seized the bowl and consumed all its contents with a single, deliberate gulp. He then returned the bowl gently to the exact spot where it had been offered.
<%= s.improveRel("P", "enjoyed the meal the Captain offered him") %>
<%= s.say("C", "Now?") %>
<%= s.say("P", "Retrieve the bowl, Captain. You have my gratitude.") %>
The Captain hadn't noticed before, but both he and the Prisoner had positioned the bowl precisely where the sunbeam hit the floor. Now, an object within the bowl reflected the sunlight.
The Captain leaned in and discovered a small coin and a tiny metallic box, barely larger than the coin itself.
<%= s.say("C", "What are these?") %>
<%= s.say("P", "I do not mean to sound rude, Captain, but they are *truly* none of your concern. Spare your thoughts from them. They are merely pivotal instruments for the forthcoming events. Simply pick them up and carry them with you at all times.") %>
[[The Captain picked up the coin and the box...|C3/E/2]]
The Captain complied with the Prisoner's directive, without much contemplation.
<%= s.say("C", "You still didn’t answer my question. You were supposed to help me now. You *promised*. So I ask again. Now *what*?") %>
<%= s.say("P", "Well, Captain... Now is the time that you have to *choose*. This choice will shape the man who will confront your destiny. How do you wish to encounter this promised land, Captain? What attire shall your soul don for this occasion?") %>
<%= s.say("C", "Do I really need to point out that I don’t get any of that?") %>
The Prisoner grinned through the shadows once again.
<%= s.say("P", "Go meet your first mate, Captain. I am sure he will make things clear enough. Ben will set you on your path towards your choice. And then, we will be there.") %>
<%= s.say("C", "Is this your help? That’s all?") %>
<%= s.say("P", "Trust me, Captain. This is the guidance you have been seeking. Paths are not always spatial, and not all uncharted territory requires a compass. Go to Ben. Afterwards, you will not need my help again. Your fate will rest in your hands. And maybe, just maybe, not only *your* fate.") %>
<%= s.say("C", "But...") %>
<%= s.say("P", "Farewell, Captain. Until we meet again.") %>
<%
s.CHAPTER = "3F";
s.i.both.push({
name: {
PT: "A strange coin",
ST: "An analog PILL",
},
description: {
PT: "A shiny metallic coin with an “N” engraved on its one side and the word “TAAF” on the other.",
ST: "An old, analog navigation PILL, in perfect condition. Should be operational. The Captain cannot remember how it came to her possession.",
},
passage: {
ST: "PILL",
},
});
s.i.both.push({
name: {
PT: "A tiny box",
ST: "An ancient flash drive",
},
description: {
PT: "A shiny metallic box, not much larger than a typical coin, without seams or adornments of any kind.",
ST: "An ancient USB flash drive. The central computer of the Black Queen should still support such a storage medium. The Captain cannot remember how it came to her possession.",
},
passage: {
ST: "USB",
},
});
%>
<%= story.render("Prisoner/Options") %>
<%= s.say("C", "Hey, Ben. The Prisoner told me to come and talk to you. Said you have a choice for me to make or something. I really don’t get what...") %>
<%= s.say("Ben", "Well, I don’t know about that Capt’n, but...") %>
Ben paused for a moment.
<%= s.say("C", "But... what?") %>
<%= s.say("Ben", "But it certainly looks like we be facin’ a mighty tough situation, I reckon.") %>
[[Continue|Chapter 4]]
<h1>Chapter 4</h1>
<h2><i><%= s.ACHS.C4.title %></i></h2>
<hr>
<%
s.unlockAch("C3");
s.TL = "ST";
s.CHAPTER = "4A";
s.setTLColor();
%>
<div#rest>
<%= s.say("C", "Are you... are you sure about that?") %>
<%= s.say("Crow", "Affirmative, Captain. I reran my calculations trillions of times.") %>
<%= s.say("C", "But... Is it possible for this ship... Fuck the ship, for *me*, for a human being, to *enter* the Crab Pulsar? A fucking *neutron star*?") %>
<%= s.say("Crow", "As I previously mentioned, it is your call whether we will trust or not these coordinates, Captain.") %>
<%= s.say("C", "We will. We are. I’m not sure, but I feel like... I *know* they’re correct, Crow. They must be...") %>
<%= s.say("Crow", "Very well, Captain. In that case, I should let you know that we are unable to navigate towards the Crab Pulsar.") %>
[["...what?"|C4/A/1]]
</div>
<%
$(function () {
$("h1").hide().fadeIn(2000);
$("h2").hide();
$("hr").hide();
$("#rest").hide();
setTimeout(() => {
$("h2").fadeIn(2000);
setTimeout(() => {
$("hr").fadeIn(s.GLOBALS.TEXT_FADEIN_MS);
$("#rest").fadeIn(s.GLOBALS.TEXT_FADEIN_MS);
}, 2000);
}, 2000);
});
%>
<%= s.say("C", "What? What do you mean?") %>
<%= s.say("Crow", "Navigating towards a neutron star is an action that will trigger several emergency systems of the ship and consequently prohibit such a navigational trajectory. Hence, the only way for setting a course towards the Crab Nebula is manually, by you.") %>
<%= s.say("C", "Alright, sounds good to me.") %>
<%= s.say("Crow", "The problem is that the manual course charting is disabled in the default settings of the ship as it was granted to you by the TAAF, and the only way to circumvent them is for your navigational skills to be sufficiently honed.") %>
<%= s.say("C", "Let me guess. The Academy won’t let you download a navigation PILL for me.") %>
<%= s.say("Crow", "Precisely, Captain.") %>
<%= s.say("C", "So... that’s it, then? We abandon these mysterious and intriguing coordinates that we received from God knows where and just keep roaming around until the honors programme finishes and I have to go back home?") %>
C.R.O.W. went silent for a while.
<%= s.say("Crow", `I sense a mood swift in your tone of voice, Captain. Allow me to attempt to lift your spirits.
Khalida Qa'id, the legendary settler and founder of the TAAF, aspired that the Academy stood as “a beacon of humanity’s passion for exploration, respect for heritage, and need for connecting with everyone and everything”. Most of these statements are irrelevant to our case, but I was hoping that you would find the first one, regarding the passion for exploration, somehow uplifting. Even if we cannot approach the Crab Pulsar, there is an infinite amount of space that you can use to quench your thirst for exploration, Captain.`) %>
[["Talk to me about Khalida..."|C4/A/2]]
<%= s.say("C", "Talk to me about her. Tell me something I don’t know. Maybe I do get inspired by her story. And God, *do* I need inspiration right now. I have no idea what we should do.") %>
<%= s.say("Crow", "Absolutely, Captain. Let me share with you some encyclopedia entries regarding the colonization endeavors of the early settlers, including the story of Khalida Qa'id.") %>
<%= s.addEntry("On the colonization of the Aldebaran System") %>
<%= s.addEntry("On the colonization efforts beyond Taurus") %>
<%= s.say("C", "That’s nice. I’ll be sure to check them.") %>
<%= s.say("Crow", "As an entertaining side note that I doubt is included in the aforementioned entries, it is said that when Khalida first glanced on the Aldebaran System from the Follower’s bridge, she turned to her assistant and said...") %>
<a0.choice>"Is this the promised land?"</a>
<a0.choice>"Are these stars from up close?"</a>
<a0.choice>"Am I dead?"</a>
<div.editor>[[C4/A/3]]
<%
$(function () {
$(".choice").on("click", function () {
s.KHALIDA_LINE = $(this).text().slice(1, -1);
story.show("C4/A/3");
});
});
%><%= s.say("Crow", `... "` + s.KHALIDA_LINE + `"`) %>
<%= s.say("C", "What? Really? What does that mean?") %>
<%= s.say("Crow", "No one knows, really. And as a matter of fact, it is more of an anecdote of sorts. No one really knows if this was actually said by Khalida. Except for her assistant, I would presume.") %>
<%= s.say("C", "Right... But if it’s true, she sounds quite uncertain, whatever she really meant by that.") %>
<%= s.say("Crow", "I agree. So, I guess, keep on keeping up, Captain. The universe is yours to conquer. Not in an imperialistic sense, just to be absolutely clear.") %>
<%= s.say("C", "It's just that... I don't know. I signed up for this program to... find *myself*, I think. My whole life so far has been about other people, you know? My family, my friends. And every single one of them seems like they *own* their life, you know what I mean? Like they absolutely *know* who they are and what their place is in the world. And I can't even imagine myself in like 5 years from now.") %>
C.R.O.W. went silent for a while, once again.
<%= s.say("Crow", "From the knowledge I have accumulated since my training days, I am quite certain now that you humans are characterized by a very interesting trait; you emit certainty, yet most of you are completely lost.") %>
<%= s.say("C", "What do you mean?") %>
<%= s.say("Crow", "Data shows that almost every single human being recorded that achieved some kind of success according to the standards of your race, mostly made it through random choices or circumstances. Even your greatest leaders, artists, scientists, they became what they were later known for due to a long chain of random events.") %>
<%= s.say("C", "I'm not sure whether that is comforting or the exact opposite.") %>
<%= s.say("Crow", "What I am trying to say is that the road ahead always seems like a hell of uncertainty. But somehow, when your species look at the rear view mirror, the path that led them at any given point always seems crystal clear; like a deterministic chain of well informed and conscious choices. That is what everybody emits, including the people in your life. But that is nothing more than a lie.") %>
<%= s.say("C", "Well... I guess that's a bit comforting. Thanks, Crow.") %>
<%= s.say("Crow", "I'm glad I could help, Captain. And keep in mind that if what your heart desires is to venture into the Crab Pulsar, then that is what you need to do. That is your random choice right there, that will seem like the perfectly clear moment when you look back later. Keep in mind that the NEO module of the Black Queen still supports the old analog PILLs type. That might be a solution for our case.") %>
<%= s.say("C", "Yeah, but where could I possibly get one?") %>
<%= s.say("Crow", "I wouldn't be surprised if you were caring one on you by chance, Captain. Your suit has been used by numerous participants of the Honors Programme before you. You never know what you might find in these pockets.") %>
<%= s.say("C", "What? Could it be...") %>
The Captain stood up from the Central Computer and [[took a look around|Bridge]] to ease her mind.
# Analog navigation PILL
<hr>
The Captain found an ancient analog navigation PILL in one of her suit's pockets. It was the first time she ever laid eyes on one. She was very curious whether it would actually work on NEO.
<% s.EXAMINED_PILL = true %>
[[Back|Inventory]]
# Ancient flash drive
<hr>
The Captain found an ancient flash drive in one of her suit's pockets. It was the first time she ever laid eyes on an actual storage media from the pre-biodigital era. She was very curious whether the ship's Central Computer could read it and find out what was stored in it.
<% s.EXAMINED_USB = true %>
[[Back|Inventory]]
The Captain found a port in the mainframe of the Central Computer that seemed to fit the ancient flash drive and inserted it.
The Computer blinked and blipped with happy sounds. After a few moments, files started to download automatically to her tablet.
<div class="rel">
<strong>Encyclopedia entry decensored/restored:</strong> <i>"On ufologists and the precursor conspiracy"</i>
</div>
<%= s.addEntry("On the history and current status of Earth") %>
[[Back|Computer]]
<%
s.RECOVERED_UFOLOGISTS_ENTRY = true;
s.USED_USB = true;
s.remove("An ancient flash drive");
%>
<%= s.say("Crow", `Captain, as it seems that this is your first time using the AstroNav interface, allow me to provide you with an overview of the fundamentals.
Within the computer screen, I present the scanned region ahead of our ship. Your primary objective is to chart a course that ensures a safe passage from our current position (at the bottom of the screen) to the conclusion of the scanned area (at the top of the screen). Once you have plotted the course, I will initiate a simulation to verify its safety, taking into account potential collisions with foreign entities or straying beyond the scanned boundaries. If your course is deemed safe, I will transfer it to the autopilot module, which will navigate the ship beyond the scanned area securely.
Based on my scans, the immediate space ahead appears relatively uneventful, featuring scattered asteroids as the primary concern. Should any exceptional anomalies arise during my ongoing monitoring, I will promptly alert you.
Proceed whenever you feel ready, Captain, and remember that I will always be here to provide guidance.`) %>
<%
s.CHAPTER = "4B";
s.NAV_SEEN_BEFORE = true;
s.astronav = s.ASTRONAV_LVLS.level1;
s.astronav.id = 1;
s.astronav.next_psg = "AstroNav/Success";
%>
[[OK|AstroNav]]
C.R.O.W. processed the verified solution and efficiently transmitted it to the autopilot module. The module diligently calculated the precise course, and the ship powered forward.
As moments turned into minutes, the ship continued its journey through the scanned sector.
Finally, with a sense of achievement, they safely exited the sector, leaving it behind.
<a0#continue>Continue</a>
<%
$(function () {
$("#continue").on("click", function () {
switch (s.astronav.id) {
// FIRST CHAIN START (1 -> 2 -> 4 -> 5 -> 6 -> 7)
case 1:
s.astronav = s.ASTRONAV_LVLS.level2;
s.astronav.id = 2;
s.astronav.next_psg = "AstroNav/Success";
story.show("AstroNav");
break;
case 2:
s.astronav = s.ASTRONAV_LVLS.level4;
s.astronav.id = 4;
s.astronav.next_psg = "AstroNav/Success";
story.show("C4/B/2");
break;
case 4:
s.astronav = s.ASTRONAV_LVLS.level5;
s.astronav.id = 5;
s.astronav.next_psg = "AstroNav/Success";
story.show("AstroNav");
break;
case 5:
s.astronav = s.ASTRONAV_LVLS.level6;
s.astronav.id = 6;
s.astronav.next_psg = "AstroNav/Success";
story.show("C4/B/3");
break;
case 6:
s.astronav = s.ASTRONAV_LVLS.level7;
s.astronav.id = 7;
s.astronav.next_psg = "AstroNav/Success";
story.show("AstroNav");
break;
case 7:
s.astronav = {};
s.astronav.id = -1;
s.astronav.next_psg = undefined;
story.show("C4/C/1");
break;
// FIRST CHAIN END
// SECOND CHAIN START (8 -> 10 -> 11)
case 8:
s.astronav = s.ASTRONAV_LVLS.level10;
s.astronav.id = 10;
s.astronav.next_psg = "AstroNav/Success";
story.show("AstroNav");
break;
case 10:
s.astronav = s.ASTRONAV_LVLS.level11;
s.astronav.id = 11;
s.astronav.next_psg = "AstroNav/Success";
story.show("AstroNav");
break;
case 11:
s.astronav = {};
s.astronav.id = -1;
s.astronav.next_psg = undefined;
story.show("C6/C/3");
break;
// SECOND CHAIN END
// OPTIONAL CHAIN START (9 -> 12 -> 13)
case 9:
s.astronav = s.ASTRONAV_LVLS.level12;
s.astronav.id = 12;
s.astronav.next_psg = "AstroNav/Success";
story.show("AstroNav");
break;
case 12:
s.astronav = s.ASTRONAV_LVLS.level13;
s.astronav.id = 13;
s.astronav.next_psg = "AstroNav/Success";
story.show("AstroNav");
break;
case 13:
s.astronav = {};
s.astronav.id = -1;
s.astronav.next_psg = undefined;
story.show("Beacon/2");
break;
// OPTIONAL CHAIN END
}
});
});
%><%= s.say("Crow", `Attention, Captain. I have detected the presence of **mobile asteroids** within the following region.
In order to assist you in plotting a secure course for the ship, I have conducted advanced predictive analysis on the asteroids' trajectories. As a result, I have integrated a **time slider** into your AstroNav interface. This feature allows you to observe the anticipated paths of the asteroids while devising the ship's course for any desired moment in the near future.
Good luck, Captain, and remember that I will always be here to provide guidance.`) %>
[[OK|AstroNav]]
<%= s.say("Crow", `Attention, Captain. I have detected the presence of **gravitational fields** within the following region.
Based on my calculations, these gravity fields will exert a force on the ship, causing it to be **displaced by one cell in the direction of the field**. This displacement will persist as long as the ship remains within the boundaries of the gravity field.
To aid you in plotting a secure course, I have marked the identified gravity fields on your interface with arrows, indicating the direction in which the ship will be pushed.
Good luck, Captain, and remember that I will always be here to provide guidance.`) %>
[[OK|AstroNav]]
<% s.CHAPTER = "4C" %>
<%= s.say("C", "We are very close now, Crow. I can feel it.") %>
<%= s.say("Crow", "Indeed, Captain. We seem to... please wait.") %>
C.R.O.W. went silent.
<%= s.say("C", "Crow, what is it? Everything ok?") %>
<%= s.say("Crow", "I just received a peculiar signal. I can neither decrypt its contents which appear to be random noise, nor triangulate its origin. We can try to navigate towards it, if you so please.") %>
<%= s.say("C", "Right now?") %>
<%= s.say("Crow", "We can only go now, if you so please. There is no saying whether we will still be able to navigate towards the signal, or even to keep receiving it, after we have approached the Crab Pulsar more. Completely ignoring it is also a viable option. It's your choice, Captain. You can navigate towards it if you feel like it from the Central Computer screen, from the Incoming Signals section.") %>
<%= s.say("C", "Understood.") %>
<%= s.say("Crow", "Apart from that, the road ahead will only get rougher. I requested one more navigation PILL from the Academy. Allow me to download it to your tablet.") %>
<%= s.say("C", "Now the Academy has no problem handing out PILLs or what?") %>
<%= s.say("Crow", "They responded positively to my request because your navigational skill designation is no longer “graduate”. What they wanted to prohibit was an Honors Programme pilot to be able to circumvent the navigational restrictions imposed by this designation. In other words, you were never meant to use navigational PILLs. But now, the system recognizes you as just another pilot of the TAAF fleet who requests a PILL.") %>
<%= s.say("C", "I see. So this analog PILL really tricked them.") %>
<%= s.say("Crow", "It seems that way, Captain.") %>
<%= s.say("C", "Quite pathetic protocols, if you ask me.") %>
<%= s.say("Crow", "I wouldn’t dare to comment on that, Captain. Apart from the navigation PILL, I took the liberty of ordering an electronics one as well. You never know when it might come in handy. Downloading them both to your tablet now...") %>
<%= s.getPILL(0) %>
<%= s.getPILL(1) %>
<%= s.say("Crow", "Done.") %>
<%= s.say("C", "Thanks, Crow. I’ll go to the NEO real quick and be right back. Are you ready for whatever comes next?") %>
<%= s.say("Crow", "I am nothing but an elaborate piece of software, Captain. The real question is, are you?") %>
[[Continue|Chapter 5]]
<h1>Chapter 5</h1>
<h2><i><%= s.ACHS.C5.title %></i></h2>
<hr>
<%
s.unlockAch("C4");
s.TL = "PT";
s.CHAPTER = "5A";
s.setTLColor();
%>
<div#rest>
<%= s.say("C", "How long has this been going on?") %>
<%= s.say("Ben", "I'd say a couple of days, Capt'n. People have reported stuff missing before, but in the last couple of days it's become quite frequent.") %>
<%= s.say("C", "So we *do* have a thief in our midst.") %>
Ben sighed.
<%= s.say("Ben", "I'm afraid it looks like it, yeah. I didn't want to bother you with this nonsense, Capt'n. I thought I had it under control. But I can't figure it out. Without becoming, let's say, *unpleasant* to the lads.") %>
<%= s.say("C", "That's your problem, Ben. You're too afraid of becoming unpleasant when necessary.") %>
<%= s.say("Ben", "Maybe, maybe... So, I came up with this stupid idea... But it doesn't feel right...") %>
[["I'm all ears..."|C5/A/1]]
</div>
<%
$(function () {
$("h1").hide().fadeIn(2000);
$("h2").hide();
$("hr").hide();
$("#rest").hide();
setTimeout(() => {
$("h2").fadeIn(2000);
setTimeout(() => {
$("hr").fadeIn(s.GLOBALS.TEXT_FADEIN_MS);
$("#rest").fadeIn(s.GLOBALS.TEXT_FADEIN_MS);
}, 2000);
}, 2000);
});
%>
<%= s.say("C", "I'm all ears.") %>
<%= s.say("Ben", "Well... last night, when Jack was asleep, I snatched the key to the crew's quarters. He likes to keep them locked during the day, especially after this whole thing got out of proportion, so to speak. So the door is now unlocked... Needless to say, he's now quite upset; he thinks he lost the key and he's afraid we'll blame the whole thing on him. Anyway, now that the crew's quarters are *accessible*, one *could* take a look and see if anythin' is... *improperly positioned*, if you catch my drift.") %>
<%= s.say("C", "And let me guess. You would never do that.") %>
<%= s.say("Ben", "Absolutely not, Capt'n! That would be a breach of privacy! What would the lads think of me? I brought each and every one of them aboard; they trust me, you know?") %>
<%= s.say("C", "But that doesn't apply to me, does it Ben?") %>
<%= s.say("Ben", "By all means, absolutely *not*, Capt'n! The ship is yours, after all! It wouldn't be proper if you weren't allowed to stroll around wherever you wanted!") %>
<%= s.say("C", "Sometimes, Ben, the way you think...") %>
<%= s.say("Ben", "So you'll do it, then?") %>
<%= s.say("C", "You *bet* I will.") %>
<%= s.say("Ben", "Marvelous! I'll be waitin' for the results of your investigation with great impatience! Also, you may want to ask around. You know, find out what's missin', while at the same time, you know... maybe *profilin'* them a bit...") %>
<%= s.say("C", "As I said before, Ben, sometimes the way you think...") %>
<%= s.say("Ben", "Perfect! I'll be waitin', Capt'n. Best of luck!") %>
The Captain [[took a look around|Forecastle]].
<% s.CHAPTER = "5B" %>
Billy’s bunk appeared surprisingly neat and organized. On the shelf above his bunk, there was a collection of various trinkets and mementos, revolving mainly around gambling, like poker chips and dice. Hidden beneath his mattress, the Captain found a rusty dagger with faded, old bloodstains, as well as a picture of Grace, in remarkably good condition.
The Captain was quite certain. Nothing incriminating here.
[[Back|Crew's Quarters]]
<% s.CHECKED_BILLY_SPOT = true %>In the corner of the crew's quarters, Grace's bunk was a sanctuary of serenity amidst the rugged surroundings. Above her neatly made bed, a celestial map had been carefully tacked to the wall. The bedding was pristine, meticulously folded, and her personal items had been thoughtfully arranged. A stack of books rested on the small shelf. The Captain took a quick glance on their worn spines; they seemed to be mainly about stars and deep thoughts.
The Captain didn't feel compelled to search through her belongings; he was certain she wasn't the thief.
[[Back|Crew's Quarters]]
<% s.CHECKED_GRACE_SPOT = true %>
Ben's bunk was roomy and somewhat untidy. A well-worn hammock hung in the corner, noticeably more used than the adjacent bed. Aside from his clothes, the bunk held no personal belongings. It seemed that Ben didn’t hold on to much personal stuff. One could theorize that Ben didn’t want anyone to know (or figure out) anything about his past. And that included the Captain.
Nevertheless, there was really nothing to search for in Ben’s bunk.
[[Back|Crew's Quarters]]
<% s.CHECKED_BEN_SPOT = true %>
Jack's bunk appeared cluttered and disorganized, like the quarters of any sailor. Among the jumble of clothes and personal belongings, the Captain noticed something unusual. There, tucked away beneath a heap of garments, were several items that seemed out of place. Women’s underwear, men’s clothes, a fine pair of boots, even a worn deck of cards were all hidden away, amongst other things, as if Jack had stashed them there to keep them out of sight.
<%= s.say("C", "Gotcha, you damn bastard.") %>
The Captain gathered all of these items into his arms and carried them towards [[the upper deck|C5/C/1]].
<% s.CHAPTER = "5C" %>
The Captain walked swiftly towards the center of the main deck and threw all of the stolen items on the floor.
<%= s.say("C", "JACK LOCKNEY! COME HERE RIGHT NOW!") %>
All chattering on deck seized at once. Everyone started gathering around the Captain. Ben approached him.
<%= s.say("Ben", "What is happenin’, Capt’n? What is this? It was Jack?") %>
Jack cut through the crowd and appeared before the Captain and Ben.
<%= s.say("C", "You filthy, slimy piece of shit. That’s why you’ve been changing crews like shirts, isn’t it?") %>
Jack paled. He tried to, but words wouldn’t come out of his mouth.
<%= s.say("C", "You know, I never bought this whole disobedience act. You didn’t strike me for a fool, Mr Lockney. A sick man? Maybe. A canning one? You bet. But not stupid.") %>
<%= s.say("Ben", "This... this whole thing... all these “fuck authority” stuff... was only a cover, for *this*? Really, Jack?") %>
<%= s.say("C", "Much more convenient to be a stupid anarchist than a sick thief, isn’t it? Has a romantic ring to it, dare I say.") %>
<%= s.say("Jack", "I... I... Captain, Ben... I can explain...") %>
<a0#guest.move-on>"Be my guest."</a>
<a0#what.move-on>"Explain what?"</a>
<div.editor>[[C5/C/2]]</div>
<%
$(function () {
$(".move-on").on("click", function () {
if ($(this).attr("id") === "guest")
s.ASK_JACK_EXPLAIN = "By all means, be my guest.";
else
s.ASK_JACK_EXPLAIN = "Explain what, you dumb fuck? Is there anything that needs explaining?";
story.show("C5/C/2");
});
});
%>
<%= s.say("C", s.ASK_JACK_EXPLAIN) %>
<%= s.say("Jack", "I’m... I can’t control it, Capt’n. I just... I feel *compelled* to steal, you know? I *need* this. I *need* to have all this stuff. Yes, it was an act, alright. But no one would hire me if they knew the truth. And I need the money, Capt’n. I have a family to feed and no one else to provide for them.") %>
<%= s.say("C", "You are not a provider, Mr Lockney. You are nothing but a sick man. The sea has *rules*. All these people aboard are a community that cares for and helps one another. If people like you were to infiltrate this community, how long do you think we would last in the open seas? Two months? Three months?") %>
<%= s.say("Jack", "I... I really tried to keep it under control this time, Capt’n. And I *really* think it worked. Well, it went better, at least. I stole nothing for almost three weeks since we set sail. That... that’s a breakthrough for me, Capt’n. I really need this job. And I really need this to be kept a secret.") %>
<%= s.say("C", "A secret?! My whole crew listens to you right now, Lockney. Every word that comes out of your mouth. You want to ask them to keep it a secret? What about Grace? You want to ask her to keep this a secret, too?") %>
Jack scanned the crowd, desperately seeking Grace amidst the onlookers. After a while, he spotted her.
<%= s.say("Jack", "Grace, I... I’m truly sorry... I never meant to...") %>
The Captain closed in to Jack with a swift and sudden move.
<%= s.say("C", "Don’t you *dare* talk to Grace, you scum. You answer to *me*. You are allowed to address no one but *me*, you understand?") %>
Jack remained silent, eyes fixed on the ground, with faint whimpers escaping him.
[["That is enough."|C5/C/3]]
<%= s.say("C", "Enough of this. What am I going to do with you know? Obviously I could throw you in the brig. But you *do* understand that you broke the code, don’t you? That you gave me every reason I need to have you walk the plank?") %>
Jack collapsed to his knees before the Captain, clutching his hands and sobbing uncontrollably.
<%= s.say("Jack", "Capt’n, please! Spare me! I’ll never do it again! I swear! I’ll never take advantage of your trust even again! Never!") %>
The Captain forcefully withdrew his hands from Jack's grip.
<%= s.say("Ben", "How the hell are you still alive, Jack? Is it *truly* your first time getting caught?") %>
<%= s.say("Jack", "Yes, Ben, it is. Every other time, when the shit hits the fan, I’m already off due to disobedience bullshit. They never get to me. But now, now I got sloppy. I thought I had everything under control, but I... I...") %>
Jack's sobs choked his words. The Captain leaned closer.
<%= s.say("C", "You are a parasite to this community, Jack. And my foremost duty as a Captain is to keep this community healthy and clean. So rest assured, this will not end well for you.") %>
The Captain stood and began speaking quietly with Ben, while Jack's sobs continued.
[["What should I do, Ben?"|C5/C/4]]
<%= s.say("C", "What should I do, Ben?") %>
<%= s.say("Ben", "It’s *your* decision, Captain. You can either throw him in the brig and see what we’ll do with him when we get back home, or he can walk the plank. Either way, believe me, *no one will judge you based on your decision*. You are the Captain, and the code grants you the authority to do as you please with him.") %>
<%= s.say("C", "I understand.") %>
<%= s.say("Ben", "Just... just have a little thing in mind while making your decision.") %>
<%= s.say("C", "What?") %>
<%= s.say("Ben", "Jack can’t swim, Capt'n. And he never touched the water after his father’s death. So, if you make him walk the plank, be sure to know that...") %>
<%= s.say("C", "...I sentence him to death.") %>
<%= s.say("Ben", "Precisely, Capt'n. Which almost every single one of the previous captains I've worked under would consider more than a fittin' punishment, if you catch my drift.") %>
Indecision clouded the Captain's face.
<%= s.say("Ben", "Whenever you are ready, Capt’n. And let me remind you: No one, and I mean, *no one* will judge you on this decision. *No one* will like you more or less after that. And I only keep repeatin’ this because, well, you’ve really never...") %>
<%= s.say("C", "...been a pirate before.") %>
<%= s.say("Ben", "That’s... that’s one way to put it, yes. So... what will it be, Capt’n?") %>
<a0#brig.move-on>"Throw him in the brig."</a>
<a0#plank.move-on>"Walk the plank, Jack."</a>
<div.editor>[[C5/C/5]]</div>
<%
$(function () {
$(".move-on").on("click", function () {
s.SPARE_JACK = $(this).attr("id") === "brig";
story.show("C5/C/5");
});
});
%>
<% if (s.SPARE_JACK) { %>
<%= s.say("C", "Throw Jack in the brig. Someone. Just do it.") %>
<%= s.say("Ben", "Captain, I... wouldn’t it be better if *I* was the one to escort Mr Lockney to the brig?") %>
<%= s.say("C", "Why? What... Oh, yes. Yes, Ben, that’s right. Please.") %>
Ben took Jack by the armpits and led him towards the stairs to the lower decks. Gradually, Jack's crying diminished as he realized the Captain had spared his life. It was while climbing down the stairs alongside Ben that he fully grasped what had happened. His crying ceased.
<%= s.say("Jack", "THANK YOU, CAPTAIN! GOD BLESS YOU! THANK YOU!") %>
<%= s.improveRel("Jack", "owes his life to the Captain", true) %>
<% } else { %>
<%= s.say("C", "Rise, Mr Lockney. You’re about to walk the plank.") %>
Jack trembled uncontrollably as the crowd assisted him in ascending the plank. He took a few hesitant steps and found himself perched above the water, his knees trembling. He turned his head back towards the crew and the Captain. His voice was calm and hushed.
<%= s.say("Jack", "Capt’n, please... Show... show mercy...") %>
The Captain gave the plank a firm kick. Jack tumbled into the sea, his screams piercing the air. Everyone leaned over the ship's edge, except for the Captain. Jack struggled to stay afloat, but it lasted less than a minute. His lifeless body floated alongside the ship, and within moments, it began to sink. It wasn’t long before it disappeared into the dark abyss below.
<%= s.improveRel("Jack", "is now dead. Of the dead nothing but good is to be said", true) %>
<% } %>
The Captain didn’t really know how he felt about what had just happened. The only thing he was sure about was that he had no idea whether this was the right decision. Did he make the right choice? The right choice...
<%= s.say("C", "Oh... Oh, God... Fuck me. Was that *it*?") %>
The crowd still surrounded the Captain.
<%= s.say("C", "Show’s over, lads. Don’t you have jobs to return to or something?") %>
The crowd dispersed in the blink of an eye. One crewmate asked another while climbing down the stairs towards the lower decks: “You heard him, right? He said, when the shit hits the *what*?”
Moments passed, with the Captain lost in his thoughts. Suddenly, he snapped awake, as if emerging from a dream. He *had* to talk to the Prisoner. He took a deep breath and [[took a look around|Main Deck]].
<% s.CHAPTER = "5D" %>
<%= s.say("C", "Was that it?") %>
The Prisoner remained concealed within the shadows, unseen and unheard. The Captain struck the cell bars in frustration.
<%= s.say("C", "Talk to me, God damn it! That was the choice, wasn’t it? I’ve played your stupid little game, now what? Now what?!") %>
The Prisoner slowly raised his hand, with his index piercing through the ray of light. A loud voice was heard shouting. It was coming from the upper deck.
The Captain ran through the brig’s door and up the stairs to the main deck.
<%= s.say("CNok", "Here you are, Capt’n!") %>
The Captain raised his head towards the crow’s nest.
<%= s.say("C", "Was that shouting you, boy?") %>
<%= s.say("CNnotok", "Aye aye, Capt’n!") %>
<%= s.say("C", "What is it?") %>
<%= s.say("CNok", "Look through the fog dead ahead, Capt’n! Seems like... like a dragon. A frickin’ huge bird, standin' still, like a damn mountain!") %>
[[Continue|Chapter 6]]
<h1>Chapter 6</h1>
<h2><i><%= s.ACHS.C6.title %></i></h2>
<hr>
<%
s.unlockAch("C5");
s.TL = "ST";
s.CHAPTER = "6A";
s.setTLColor();
%>
<div#rest>
<%= s.say("Crow", "We are now a few nanoparsecs away from the Crab Pulsar, Captain, where the coordinates we received pointed to.") %>
<%= s.say("C", "Alright. Let’s go.") %>
<%= s.say("Crow", "Captain, wait.") %>
<%= s.say("C", "What is it?") %>
<%= s.say("Crow", "There are two things that I would like to bring to your attention. Firstly, we still receive this peculiar signal that I reported a while ago. I still cannot trace the source. It is at your discretion whether you would like to investigate it further or not. Please note that plotting a course towards it will not stir us much further away from our target, so it still remains as a viable option, if you feel like it.") %>
<%= s.say("C", "Alright. And the second thing?") %>
<%= s.say("Crow", "We do not know what we will encounter when we embark for this last leg of our journey towards the Crab Pulsar. Therefore, **you should probably do anything that you would like to do and haven’t already beforehand**. For all we know, our next step may be **a point of no return for our adventure**.") %>
<%= s.say("C", "Wow, Crow. That sounded quite ominous.") %>
<%= s.say("Crow", "That was not my intention, Captain, but I believe you get the message I tried to convey.") %>
<%= s.say("C", "Yeah, I did. I’ll see if I missed anything important and then I’ll come talk to you.") %>
<%= s.say("Crow", "Understood, Captain. I will be waiting. And remember, I will always be here to provide guidance.") %>
<div style="display: flex; justify-content: center; align-items: center;">
<div#swap>
<%= story.render("Swap/Icon") %>
</div>
</div>
<div.editor>[[C6/A/1]]</div>
<%
$(function () {
$("h1").hide().fadeIn(2000);
$("h2").hide();
$("hr").hide();
$("#rest").hide();
setTimeout(() => {
$("h2").fadeIn(2000);
setTimeout(() => {
$("hr").fadeIn(s.GLOBALS.TEXT_FADEIN_MS);
$("#rest").fadeIn(s.GLOBALS.TEXT_FADEIN_MS);
}, 2000);
}, 2000);
});
$(function () {
const swap = document.getElementById("swap");
swap.addEventListener("mouseover", () => {
swap.style.cursor = "pointer";
});
swap.addEventListener("mouseout", () => {
swap.style.cursor = "default";
});
$("#swap").on("click", () => {
s.TL = "PT";
s.setTLColor();
story.show("C6/A/1");
});
});
%>
<svg class="menu-button-icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path d="M0 0h512v512H0z" fill="#000" fill-opacity="1"></path><g class="" style="" transform="translate(0,0)"><path d="M138.94 22.99c-.566-.014-1.087-.01-1.56.006-.902.028-1.486.074-2.04.1-.56-.027-1.14-.072-2.043-.1-1.172-.037-2.63-.02-4.37.203h-.013l-.012.003c-33.88 4.402-58.95 36.95-58.95 78.18 0 17.88 4.53 35.75 12.616 50.138-11 4.404-20.23 11.382-27.5 20.107-9.996 11.997-16.58 27.015-21.123 43.496-9.085 32.963-10.13 72.213-10.13 107.604v9.345H65.86l10.513 163.524h54.815v.015h255.886v-.014h53.457l10.515-163.524h42.047v-9.345c0-35.39-1.048-74.64-10.133-107.604-4.544-16.48-11.125-31.5-21.122-43.496-7.27-8.725-16.498-15.703-27.5-20.106 8.085-14.386 12.617-32.257 12.617-50.137 0-41.23-25.07-73.778-58.95-78.18l-.013-.002h-.012c-.314-.04-.61-.067-.906-.095v-.007h-.066c-1.315-.12-2.454-.132-3.4-.102-.894.028-1.464.07-2.022.098-.55-.026-1.127-.07-2.022-.098-.944-.03-2.084-.018-3.4.102H140.78c-.657-.06-1.27-.094-1.84-.108zm-3.6 18.813c.236.002.35.01.605.01 1.135 0 2.276.075 3.416.197h238.185c1.14-.122 2.28-.197 3.416-.197.266 0 .383-.008.626-.01.244.002.362.01.627.01 5.338 0 10.785 1.386 15.875 3.783l.072-.153c17.34 8.21 30.108 28.395 30.108 55.94 0 18.664-6.87 38.574-15.952 49.515l-10.142 12.217 15.605 2.934c12.81 2.407 22.07 8.383 29.7 17.54 7.63 9.157 13.387 21.71 17.463 36.5 7.438 26.984 9.096 60.97 9.344 93.293h-40.77l-10.51 163.525H340.165l-.002-.015H176.78v.015H93.9L83.387 313.383H42.62c.247-32.323 1.905-66.31 9.343-93.293 4.076-14.79 9.833-27.343 17.463-36.5 7.63-9.157 16.89-15.133 29.7-17.54l15.606-2.935-10.142-12.217c-9.083-10.94-15.95-30.85-15.95-49.515 0-27.563 12.783-47.753 30.14-55.953l.077.166c5.09-2.397 10.537-3.783 15.875-3.783.258 0 .37-.008.608-.01zM169.977 60.7c3.935 5.41 7.082 11.84 9.17 19.146h158.65c2.09-7.307 5.235-13.735 9.17-19.145h-176.99zm12.013 37.837c.03.94.05 1.888.05 2.846 0 5.412-.594 10.926-1.636 16.3H336.54c-1.04-5.374-1.634-10.888-1.634-16.3 0-.958.02-1.906.05-2.846H181.99zm-7.316 37.836c-2.452 5.657-5.376 10.658-8.586 14.525l-3.834 4.62H354.69l-3.833-4.62c-3.21-3.867-6.134-8.868-8.586-14.525H174.675zm16.576 37.836c3.67 2.61 6.968 5.74 10.002 9.38 2.433 2.92 4.674 6.19 6.732 9.764H308.96c2.06-3.574 4.3-6.844 6.733-9.764 3.034-3.64 6.33-6.77 10-9.38H191.25zm25.004 37.835c.88 2.6 1.7 5.283 2.46 8.045.988 3.58 1.867 7.29 2.66 11.097h74.196c.794-3.806 1.674-7.517 2.66-11.097.762-2.762 1.582-5.446 2.46-8.045h-84.436zm8.225 37.834c.81 6.24 1.447 12.642 1.942 19.143h64.1c.496-6.5 1.134-12.903 1.945-19.144H224.48zm3.006 37.835c.253 6.384.393 12.778.483 19.144h61.007c.09-6.367.23-12.76.482-19.145h-61.974zM186.51 325.55l-1.233 19.145h146.39l-1.23-19.144H186.51zm-2.434 37.837l-1.23 19.144H334.1l-1.23-19.143H184.075zm-2.43 37.836l-1.232 19.142H336.53l-1.23-19.142H181.646zm-2.433 37.834l-1.23 19.144h160.98l-1.23-19.143h-158.52z" fill="#fff" fill-opacity="1"></path></g></svg><%= s.say("Ben", "We managed to dock, Capt’n. Wasn’t that easy; this fuckin’ bird island is nothin’ but rocks.") %>
<%= s.say("C", "How can a place like that exist, Ben? How can rocks have such a shape? It’s like a bird, with wings and all, but at the same time not... not *exactly*.") %>
<%= s.say("Ben", "I’m not a geologist or anythin’ like that, Capt’n. What I do know is that this god-forsaken place is a barren rock in the middle of nowhere. Are you sure you want to go there? From the looks of it, there’s nothin’ interestin’ but for this...") %>
<%= s.say("C", "...cave under the left... “wing”.") %>
<%= s.say("Ben", "Still, Capt’n. Are you sure about that?") %>
<%= s.say("C", "Yes, Ben. Yes, I am. This is the place. Wasn’t this our goal? The purpose of this erratic voyage? And that’s me putting it mildly...") %>
<%= s.say("Ben", "Alright, Captain. But let me warn you.") %>
<%= s.say("C", "Of what, Ben?") %>
<%= s.say("Ben", "We have absolutely *no* idea what lies in the belly of this rocky flying monster. It could be nothin’, it could be anythin’. So, my advice to you is this: **do anything you wanna do before goin’ in there**. Maybe you wanted to speak to people about stuff and have postponed it? Maybe things you left undone? I don’t know, but heed my words, **this could be a point of no return for our journey**. We really have *no* idea what your father had in store for you when he set you on the course for this place.") %>
<%= s.say("C", "Alright. I’ll see if there’s anything that requires my attention before going. And then, I’ll come talk to you.") %>
<%= s.say("Ben", "You do that, Capt’n. I’ll be waitin’.") %>
The Captain needed some time to think. Had he left anything undone? He [[took a quick look around|Main Deck]].
<% s.CHAPTER = "6B" %>
<h1>Chapter 7</h1>
<h2><i><%= s.ACHS.C7.title %></i></h2>
<hr>
<%
s.unlockAch("C6");
s.TL = "CT";
s.CHAPTER = "7";
s.setTLColor();
%>
<div#rest>
<%= s.say("him", "Who are you? Why are you dressed like this?") %>
<%= s.say("her", "I could ask you the same question. Is this some kind of costume?") %>
<%= s.say("him", "You watch your mouth.") %>
<%= s.say("her", "Easy, easy. Alright, I'll start. I came here following some coordinates I received via a strange signal.") %>
<%= s.say("him", "What... what signal? What do you mean?") %>
<%= s.say("her", "They were encoded in a way, in some frequencies of an electromagnetic shockwave that hit my ship.") %>
<%= s.say("him", "Your ship? Are you... are you a captain?") %>
<%= s.say("her", "Yes, that's right. You too?") %>
<%= s.say("him", "Yes, yes I am. Are you from Nassau or anywhere around?") %>
<%= s.say("her", "I... I don't know what Nassau is, I'm afraid. I'm from the Aldebaran System. I'm a Taurian.") %>
<%= s.say("him", "I don't get half the words that come out of your mouth. Shockwave, Aldebaran, Taurian... What is this? What is happening?") %>
<%= s.say("her", `Alright, wait. It all started when I received that poem from my mother. "What is lost..."`) %>
[["...will be found."|C7/1]]
</div>
<%
$(function () {
$("h1").hide().fadeIn(2000);
$("h2").hide();
$("hr").hide();
$("#rest").hide();
setTimeout(() => {
$("h2").fadeIn(2000);
setTimeout(() => {
$("hr").fadeIn(s.GLOBALS.TEXT_FADEIN_MS);
$("#rest").fadeIn(s.GLOBALS.TEXT_FADEIN_MS);
}, 2000);
}, 2000);
});
%>
<%= s.say("him", `..."will be found."`) %>
<%= s.say("her", "Yes! Yes, that's it! How do you know?") %>
<%= s.say("him", "I... I got the same poem from my father a while ago.") %>
<%= s.say("her", "Wait... Are you... are you the pirate captain I read about? The one who got a strange book from his father after he passed away?") %>
<%= s.say("him", "Alright, now you 're starting to *really* creep me out.") %>
<%= s.say("her", "The signal I mentioned, I... I also received a journal of sorts. And I... I think this might be yours. Did you... did you sent that to me?") %>
<%= s.say("light", "NO. HE DID NOT.") %>
Suddenly, a thin beam of white light descended from the ceiling of the cave, right between the two Captains. Then, the beam slowly started to get thicker and thicker, resembling [[a firm pillar made of pure marble|C7/2]].
<div.editor>[[C7/3]]</div>
<style>
#light-enters {
width: 0.5vw;
height: 100%;
background-color: white;
position: fixed;
left: 50%;
top: -100%;
transform: translateX(-50%);
z-index: -1;
}
</style>
<%
$(function () {
let light = $('<div id="light-enters"></div>');
light.insertAfter(".passage");
light
.delay(2000)
.animate({ top: "0%" }, 5000)
.delay(2000)
.animate({ width: "33.33vw" }, 6000);
setTimeout(() => {
story.show("C7/3");
}, 18000);
});
%>
<%= s.say("him", "Holy fuck, what the hell is happening?") %>
<%= s.say("light", "GREETINGS, VOYAGERS.") %>
<%= s.say("her", "What is this? Who's speaking?") %>
<%= s.say("him", "Are you... are you some kind of *god*?") %>
<%= s.say("light", "ALL GODS DIED LONG AGO, VOYAGERS. ONLY WE REMAIN.") %>
<%= s.say("her", "We?") %>
<%= s.say("light", "THE LIGHT IS EVERYWHERE. ALWAYS. EVERYTHING. WE ARE MERELY HIS HUMBLE AMBASSADORS. VOYAGERS LIKE YOU. BEFORE YOU LIES THE END OF YOUR JOURNEY.") %>
<%= s.say("him", "Is this a threat? Are you gonna kill us?") %>
<%= s.say("light", "I WILL NOW ATTEMPT TO HELP YOU UNDERSTAND. PIRATE, STEP FORWARD. WHY ARE YOU HERE?") %>
<%= s.say("him", "No idea, actually.") %>
<%= s.say("light", "YOUR FATHER BROUGHT YOU HERE. HE IS SPEAKING RIGHT NOW, ALONG WITH ALL OF US. DON'T YOU RECOGNIZE THE SOUND OF HIS VOICE?") %>
<%= s.say("him", "What... what the hell are you talking about?! What sound of what voice? That's no human voice I'm hearing, that's for sure. That's like... like a choir of thousands of dead people talking.") %>
<%= s.say("light", "ASTROFARER, STEP FORWARD. WHY ARE YOU HERE?") %>
<%= s.say("her", "I followed my mother's message. Is she... with you?") %>
<%= s.say("light", "HELLO, MY LOVE.") %>
<%= s.say("her", "That's... that cannot...") %>
<%= s.say("him", "Enough! Stop this! Speak plainly God damn it, what is going on?") %>
<%= s.say("light", "HELLO THERE, MY BOY.") %>
<%= s.say("him", "No! NO! STOP!") %>
<%= s.say("light", "TELL US, VOYAGERS. WHY ARE YOU HERE? SEEK INSIDE AND DO NOT RUSH YOUR THOUGHTS. ANSWER TRUTHFULLY.") %>
[["I didn't want to be alone anymore."|C7/4/P]]
[["I came in search of myself."|C7/4/A]]
<%
$(function () {
$(".passage").css("position", "absolute");
$(".passage").css("left", "0");
$(".passage p:not(:last-child)").css("margin-bottom", "5vh");
if ($("#light-bg").length === 0) {
let light = $('<div id="light-bg"></div>');
light.insertAfter(".passage");
}
// do not do the following if the passage has the CHOICE tag
if (passage.tags.includes("CHOICE")) return;
// get all p elements DIRECTLY under the passage
let original_ps = $(".passage").children("p");
if (original_ps[0].innerText === "") {
let prev1 = original_ps[0].previousElementSibling;
let prev2 = original_ps[0].previousSibling;
$(prev1).appendTo(original_ps[0]);
$(prev2).appendTo(original_ps[0]);
}
let ps = original_ps.clone();
original_ps.remove();
// create columns
let col_container = $(
'<div id="cols-container" style="display: flex;width: 100vw;justify-content: space-around;position: absolute;left: 0;">'
);
let col_p = $(
'<div id="col-pirate" class="char-col" style="flex: 0 0 30vw;">'
);
let col_l = $(
'<div id="col-light" class="char-col" style="flex: 0 0 30vw; color: black;">'
);
let col_a = $(
'<div id="col-astrofarer" class="char-col" style="flex: 0 0 30vw;">'
);
col_p.append(ps.clone());
col_l.append(ps.clone());
col_a.append(ps.clone());
col_container.append([col_p, col_l, col_a]);
$(".passage").append(col_container);
// only keep the corresponding text for each column
$(".char-col").each(function () {
let col_char = $(this).attr("id").split("-")[1];
let matching_char =
"The " + col_char.charAt(0).toUpperCase() + col_char.slice(1) + ":";
$(this)
.children("p")
.each(function () {
let ptext = $(this).text();
// special handling of buttons
if (
$(this).children().get(0) !== undefined &&
$(this).children().get(0).tagName === "A"
) {
if ($(this).children()[0].className === "move-on") {
if (col_char === "light") $(this).hide();
else if (
col_char === "pirate" &&
s.ENDING === "astrofarer"
)
$(this).hide();
else if (
col_char === "astrofarer" &&
s.ENDING === "pirate"
)
$(this).hide();
else {
let button_text = $(this).children()[0].innerText;
let button_text_parts = button_text.split("|");
if (button_text_parts.length === 2) {
let button_text_part =
col_char === "pirate"
? button_text_parts[0]
: button_text_parts[1];
$(this).children()[0].innerText =
button_text_part;
}
$(this)
.children()[0]
.setAttribute("person", col_char);
$(this)
.children()
.on("click", function () {
s.PIRATE_ASKED =
$(this).attr("person") === "pirate";
let next_passage = $(".passage")
.find(".editor")[0]
.children[0].getAttribute(
"data-passage"
);
story.show(next_passage);
});
}
} else {
let passage_name = $(this)
.children()[0]
.getAttribute("data-passage");
let passage_char = passage_name
.charAt(passage_name.length - 1)
.toLowerCase();
if (passage_char !== col_char.charAt(0)) $(this).hide();
else if (passage_char === "l") {
$(this).children().css("color", "black");
$(this).children().css("border-color", "black");
}
}
}
// handling of simple text
else if (!ptext.startsWith(matching_char))
$(this).css("visibility", "hidden");
});
});
});
$(function () {
if (!passage.tags.includes("CHOICE")) return;
let choice_p = $(".passage").find("a[data-passage$='P']");
let choice_l = $(".passage").find("a[data-passage$='L']");
choice_l.css("color", "black");
choice_l.css("border-color", "black");
choice_l.css("opacity", "0");
// make it unclickable for now
choice_l.css("pointer-events", "none");
let choice_a = $(".passage").find("a[data-passage$='A']");
let col_container = $(
'<div id="cols-container" style="display: flex;width: 100vw;height: 99vh;justify-content: space-around;align-items: center;position: absolute;left: 0;">'
);
col_container.append([choice_p, choice_l, choice_a]);
$(".passage").append(col_container);
$(".passage").children("p").remove();
choice_l.delay(10000).animate({ opacity: 1 }, 5000);
setTimeout(() => {
choice_l.css("pointer-events", "auto");
}, 15000);
});
%>
<%= s.say("him", "Alright. Fuck it. Let's do this. I'm here because I got sick of being alone, alright? Because my whole life I've been nothing more than a thief in the streets, with no one to go home to, no one to even talk to. No family. No friends. When Ben came to me with a message from my father, I took a glimpse of both; my family, and a friend. So I said fuck it. Why not? And here I am, having no idea what is happening or where I am or who - shit, *what* you are.") %>
<%= s.say("light", "AND JUST LIKE THAT, A PIRATE YOU BECAME. SAILING THE HIGH SEAS. VENTURING TOWARDS THE UNKNOWN. DID YOU FIND WHAT WAS MISSING?") %>
<%= s.say("him", "I... yes. Yes, I think I did.") %>
<%= s.say("light", "SAY IT.") %>
<%= s.say("him", "I met Ben. I made a friend. And I met all those people. Good people. Nothing special, just simple people, but each of them shaped by a completely different story. So different. Like different worlds.") %>
<%= s.say("light", "ARE YOU CONTEMPT BY WHAT YOU FOUND IN YOUR JOURNEY?") %>
<% if (all_rels_maxed()) { %>
<%= s.say("him", "Yes. Yes, I am. I got close with each and everyone of them. I heard them, I heard their stories, their fears, their hopes. I... I think I became friends with all of them.") %>
<% } else { %>
<%= s.say("him", "Yes, I... I... No. No, I’m not. I guess I could have come closer with some of them. Listen to them a bit more, help them. But I... I guess I’m just not good at this.") %>
<% } %>
<%= s.say("light", "YOU ARE A PERSON OF LONELINESS. THIS JOURNEY OFFERED YOU A CHANCE TO CONTEMPLATE ON THIS MOST PROMINENT TRAIT OF YOUR CHARACTER. THE LIGHT KNOWS NOTHING OF GOOD OR BAD. INTERPRETATION IS YOUR BURDEN AND YOUR BURDEN ALONE. THE LIGHT OFFERED YOU A GLIMPSE INWARDS. TO PREPARE YOU FOR WHAT IS TO COME.") %>
<% if (!s.SPARE_JACK) { %>
<%= s.say("him", "I killed a man. I killed a man for stealing, for fuck’s sake. I’ve never killed a man in my life before.") %>
<%= s.say("light", "THAT IS QUITE INTERESTING. WAS IT WORTH IT? TAKING HIS LIFE?") %>
<%= s.say("him", "I don’t know. I could have just spared him and locked him in the brig.") %>
<% } else { %>
<%= s.say("him", "I let a thief go. I spared his life. Despite posing a threat to the well-being of my crew.") %>
<%= s.say("light", "THAT IS QUITE INTERESTING. WAS IT WORTH IT? SPARING HIS LIFE?") %>
<%= s.say("him", "I don’t know. I had every right to make him walk the plank. I don’t know why I spared him. I could have killed him to protect my crew and to make an example out of him.") %>
<% } %>
<%= s.say("light", "YOU COULD. BUT YOU DID NOT. THIS IS THE MAN YOU ARE. THIS IS THE SOUL YOU BRING BEFORE THE LIGHT. WHETHER OTHERS HELPED YOU SHAPING YOUR COURSE AND YOURSELF IS SOMETHING YOU AND ONLY YOU KNOW. THE LIGHT OFFERED YOU THE CHANCE TO CONTEMPLATE ON THAT. BUT YOU CAN FEEL IT, DON’T YOU? DESPITE THIS, DESPITE THE WAY YOU HANDLED YOUR LONELINESS IN YOUR JOURNEY, SOMETHING IS STILL MISSING. AND YOU DO NO KNOW WHAT IT IS.") %>
<%= s.say("him", "...yes.") %>
<% s.P_SPOKE_TO_LIGHT = true %>
<% if (!s.A_SPOKE_TO_LIGHT) { %>
[["I came in search of myself."|C7/4/A]]
<% } else { %>
<a0.move-on>"What is the Light?"</a>
<% } %>
<div.editor>[[C7/5]]</div>
<%
function all_rels_maxed() {
for (let person in s.rels) {
let relLvl = s.rels[person];
let relMaxed = relLvl[0] === relLvl[1];
if (!relMaxed) return false;
}
return true;
}
%><%= s.say("her", "I guess I... I didn’t know what I wanted to do with my life. Who or what I wanted to become. All my life, my family and friends guided me wherever they pleased. Venturing away into space seemed like an appropriate course of action.") %>
<%= s.say("light", "ARE YOU CONTENT WITH WHAT YOU FOUND IN YOUR JOURNEY?") %>
<% if (s.ACHS["nav"].unlocked && s.ACHS["fusebox"].unlocked) { %>
<%= s.say("her", "Yes, I think. I managed to work on my skills and competences while I was alone. Hell, I piloted a ship on my own for so long. I left no problem unsolved, nothing broken unrepaired, no signal uninvestigated.") %>
<% } else { %>
<%= s.say("her", "I am. To a certain degree, at least. Hell, I piloted a ship on my own for so long. But... I guess there were things I could work on more. Some things I left undone, uninvestigated. Maybe out of boredom? I don’t know. But there were more things I could do, that’s for sure.") %>
<% } %>
<%= s.say("light", "YOU ARE A PERSON OF BELONGING. YOU APPRECIATE LOSING YOURSELF IN THE CROWD. THIS JOURNEY OFFERED YOU A CHANCE TO CONTEMPLATE ON THIS MOST PROMINENT TRAIT OF YOUR CHARACTER. THE LIGHT KNOWS NOTHING OF GOOD OR BAD. INTERPRETATION IS YOUR BURDEN AND YOUR BURDEN ALONE. THE LIGHT OFFERED YOU A GLIMPSE INWARDS. TO PREPARE YOU FOR WHAT IS TO COME.") %>
<%= s.say("her", "You mean, by being alone?") %>
<%= s.say("light", "BY GIVING YOU THE SPACE AND TIME NEEDED TO LOOK INWARDS. TO REDEFINE YOUR COMPETENCES, YOUR PASSIONS, YOUR OWN SELF FROM WITHIN, NOT BY OTHERS. BUT YOU CAN FEEL IT, DON’T YOU? DESPITE ALL THIS, SOMETHING IS STILL MISSING. AND YOU DO NO KNOW WHAT IT IS.") %>
<%= s.say("her", "Yes. Yes, it does.") %>
<% s.A_SPOKE_TO_LIGHT = true %>
<% if (!s.P_SPOKE_TO_LIGHT) { %>
[["I didn't want to be alone anymore."|C7/4/P]]
<% } else { %>
<a0.move-on>"What is the Light?"</a>
<% } %>
<div.editor>[[C7/5]]</div>
<% if (s.PIRATE_ASKED) { %>
<%= s.say("him", "Enough of this. You should answer some questions, too. What are you? What is the Light?") %>
<% } else { %>
<%= s.say("her", "It’s only fair *we* also ask a couple of questions, don’t you think? What is this? Who are you? What is the Light?") %>
<% } %>
<%= s.say("light", "THE LIGHT IS NOTHING BUT A FORCE OF NATURE. LIKE GRAVITY, INERTIA, OR ENTROPY. IT IS NOTHING LIKE A GOD. IT CAME INTO EXISTENCE LONG BEFORE THEM AND WILL LAST AS LONG AS ANYTHING.") %>
<%= s.say("her", "It’s just a natural phenomenon, so to speak, then?") %>
<%= s.say("light", "YES. THAT IS ALSO A FITTING DESCRIPTION. WIND BLOWS. RAIN FALLS. WAVES CRUSH ON THE SHORE. THE PLANETS ORBIT AROUND THEIR STARS. NONE OF THEM HAVE WILLS OR DESIRES OF THEIR OWN. THEY SIMPLY EXIST.") %>
<%= s.say("him", "Alright, then. If the wind is blowing and the waves are crushing, what does this precious Light of yours do?") %>
<%= s.say("light", "IT GRAVITATES BEINGS OF HIGH INTELLECT TOWARDS HAPPINESS.") %>
<%= s.say("her", "That... that doesn’t mean anything.") %>
<%= s.say("light", "OH, BUT IT DOES. WE DO NOT KNOW WHY, BUT THE LIGHT ALWAYS WORKS IN PAIRS. WE SURMISE THAT THE BEINGS THAT ARE PAIRED UP ARE OF COMPLEMENTARY NATURES.") %>
<%= s.say("him", "Does this apply to us two?") %>
<%= s.say("light", "OBVIOUSLY, PIRATE.") %>
<%= s.say("her", "And what happens then?") %>
<%= s.say("light", "THEN, THE PAIR GRAVITATES THROUGH SPACE AND TIME TOWARDS A SINGLE POINT IN THE SPACE-TIME CONTINUUM. LONG AGO, THAT WAS A COMPLETELY NATURAL PROCESS. THE PAIRED UP BEINGS NEEDED NO GUIDING TO MEET EACH OTHER. BUT THIS CHANGED THROUGH THE AGES. WE DO NOT KNOW WHY. NOW WE, THE HUMBLE AMBASSADORS OF LIGHT, SEARCH FOR THE PAIRS ACROSS SPACE AND TIME AND GIVE THEM THE PUSH THEY NEED TO REACH THE POINT OF CONVERGENCE.") %>
<a0.move-on>"My father..."|"My mother..."</a>
<div.editor>[[C7/6]]</div>
<% if (s.PIRATE_ASKED) { %>
<%= s.say("him", "My father...") %>
<%= s.say("her", "And my mother...") %>
<% } else { %>
<%= s.say("her", "My mother...") %>
<%= s.say("him", "And my father...") %>
<% } %>
<%= s.say("light", "WE ARE BOTH HERE, SWEETHEARTS.") %>
<%= s.say("him", "What... what is this...") %>
<%= s.say("light", "WE ALSO HYPOTHESIZE THAT THE JOURNEY THAT LEADS TOWARDS THE CONVERGENCE POINT OF THE PAIR NATURALLY CHALLENGES EACH BEING TO QUESTION THE SELF THEY HAVE BUILT THROUGH THEIR LIVES AND OFFERS THEM A GLIMPSE OF OTHER PATHS THAT THEY MAY HAVE NEGLECTED.") %>
<%= s.say("her", "This is absurd. Everything is absurd.") %>
<%= s.say("light", "AND YET, HERE YOU ARE.") %>
<a0.move-on>"And now what?"</a>
<div.editor>[[C7/7]]</div>
<%= s.say(s.PIRATE_ASKED ? "him" : "her", "Yes. Yes, we are. And now *what*?") %>
<%= s.say("light", "NOW, YOUR SOULS HAVE BEEN BATHED IN THE LIGHT. YOUR JOURNEYS SHOWED YOU WHO YOU ARE AND WHO YOU COULD HAVE BEEN. IT IS NOW TIME TO STEP INTO THE LIGHT AND TRY AGAIN. EQUIPPED WITH THE INSIGHTS AND EXPERIENCES THAT THE JOURNEY OF THE LIGHT BESTOWED UPON YOU, YOU ARE NOW BETTER PREPARED. DEFY YOUR NATURAL DEATH, REFUSE YOUR DECAY, AND TRY AGAIN. YOU MAY MEET THE LIGHT A MYRIAD MORE TIMES. OR YOU MAY BE THE ONE. IN ANY CASE, THE CYCLE MUST CONTINUE. THE SEARCH IS NOT OVER, AS IT SEEMS.") %>
<%= s.say("him", "You ask us to... step in there? How... how do we know what will happen?") %>
<%= s.say("light", "ALL OF US HAVE STOOD WHERE YOU NOW STAND. BY STEPPING INTO THE LIGHT, THE PROCESS CONTINUES. ADJUSTMENTS ARE MADE. YOU WILL NOT SIMPLY JOIN US. YOU WILL *MERGE* WITH US. THE LIGHT COMBINES US, MIXES US, ALL AS PART OF A NATURAL PROCESS, AN ONGOING SEARCH OF THE INTELLECT TO BE HAPPY. TO BE COMPLETE.") %>
<%= s.say("her", "Reincarnation? Is this what’s all about?") %>
<%= s.say("light", "NO SINGLE BEING CAN ACHIEVE WHAT THE LIGHT ENVISIONS. IT IS ONLY THROUGH MERGING, THROUGH MINGLING, THAT THERE IS A HOPE FOR THE INTELLECT TO FIND PEACE. A SINGLE BEING IS TOO WEAK. TOO FOCUSED ON ITS OWN COMPETENCES, FEARS AND DESIRES. ONLY BY COLLECTING ITS FORCES THE INTELLECT CAN HOPE TO FILTER OUT ITS WEAKNESSES AND FULLY UTILIZE ITS STRENGTHS. TO FIND HAPPINESS. PEACE. PEACE. THAT IS ALL THAT MATTERS.") %>
<%= s.say("him", "What... what do you think about all this?") %>
<%= s.say("her", "I’m scared shitless, if that’s what you mean.") %>
<%= s.say("him", "Thank God. That’s a relief.") %>
<%= s.say("her", "But, shall we... shall we go?") %>
<%= s.say("light", "NO. ONLY ONE OF YOU MAY ENTER THE LIGHT.") %>
<a0.move-on>"What?"</a>
<div.editor>[[C7/8]]</div>
<%= s.say(s.PIRATE_ASKED ? "him" : "her", "What? What do you mean only one of us?") %>
<%= s.say(s.PIRATE_ASKED ? "her" : "him", "What about the other?") %>
<%= s.say("light", "THE JOURNEY IS MEANT TO BE CONTINUED FOR ONLY ONE OF YOU. THE OTHER MUST MEET THEIR END HERE. ALAS, ONCE THE PROCESS WAS PURE. THE END CAME NATURAL FOR ONE OF THE BEINGS, AND THE OTHER WOULD MERGE WITH US. BUT NOW, THIS IS NECESSARY.") %>
<%= s.say("her", "...what is?") %>
<%= s.say("him", "Hey, listen. We...") %>
<%= s.say("her", "I didn’t come all this way for nothing, man.") %>
<%= s.say("him", "Me neither. It’s my father... I heard his voice. He wanted me to...") %>
<%= s.say("her", "...to come here. My mother. This may be it. I don’t care. I don’t care for what I have to lose. I must try.") %>
<%= s.say("him", "I’m not dying here. All this can’t be meaningless. Can’t be for nothing. It must *mean* something. It *must*.") %>
<%= s.say("her", "I won’t be the one to die.") %>
<%= s.say("him", "Neither will I.") %>
<%= s.say("light", "ONE OF YOU MUST DIE. THE OTHER MUST MERGE. THE LIGHT IS NOT AS POWERFUL AS IT ONCE WAS. YOU MUST DECIDE ON YOUR OWN.") %>
[["PLEASE, PROCEED."|C7/9/L]]
[[SHOOT HER|C7/10/P]]
[["Together"|C7/10/L]]
[[SHOOT HIM|C7/10/A]]
The Pirate didn’t hesitate a second. In the blink of an eye, he drew his flintlock and shot the Astrofarer, right between the eyes.
The cave resounded with a sharp, deafening sound.
Her body made a loud thud as it crumpled on the ground. She now laid there, still and lifeless, on the floor of the cave, in a pool of blood.
[[Continue|C7/11/P]]
<%
$(function () {
$(".passage").removeAttr("style");
$("#light-bg").remove();
});
%>
<%= s.say("her", "Let me ask you a question first.") %>
<%= s.say("light", "ENOUGH. THERE IS NO TIME TO...") %>
<%= s.say("him", "Shut the fuck up and listen to her, mate.") %>
<%= s.say("her", "Has it ever occurred to you that there is a *reason* this Light of yours brings people here in pairs?") %>
<%= s.say("light", "THE LIGHT WORKS IN MYSTERIOUS WAYS. WE COULD NEVER HOPE TO...") %>
<%= s.say("him", "That’s it. That’s it! We’ll go in...") %>
<%= s.say("her", "...*together*. Yes.") %>
<%= s.say("light", "NO! NEVER! THIS HAS NEVER HAPPENED BEFORE! WE CANNOT ALLOW YOU TO PROCEED TOGETHER.") %>
<%= s.say("him", "Why so? Don’t you want to see what will happen? Maybe this is the reason you have been failing all this time after all.") %>
<%= s.say("her", "And what about the “complementary nature of the paired beings” you mentioned before? Didn’t that make you wonder whether you’ve got this whole thing wrong?") %>
<%= s.say("light", "THE LIGHT WAS NOT ALWAYS IN NEED OF US. LONG AGO, THE PROCESS WAS COMPLETELY NATURAL. AND BACK THEN, ONLY ONE BEING ENTERED THE LIGHT, TOO. THE OTHER PERISHED. IT HAD TO.") %>
<%= s.say("her", "Well, my dear friend, if we had left everything to nature, I wouldn’t be flying a spaceship and all of humanity would be stuck in this guy’s age. No offense.") %>
<%= s.say("him", "None taken. I like where this is going.") %>
<%= s.say("her", "So, whether you like it or not, we are both here for the same reason.") %>
<%= s.say("him", "And none of us is willing to step back, let alone die in this god-forsaken place.") %>
<%= s.say("her", "I second that.") %>
<%= s.say("light", "BUT YOU... YOU CANNOT... THIS IS PREPOSTEROUS! NEVER HAS THIS HAPPENED BEFORE. YOU MUST CHANGE YOUR MIND. YOU MUST!") %>
<%= s.say("her", "Together?") %>
<%= s.say("him", "Together.") %>
[[Step into the Light, together|C7/12/L]]
<% s.ENDING = "both" %>
The Astrofarer didn’t hesitate a second. In the blink of an eye, she drew her plasma gun and shot the Pirate, right between the eyes.
The cave resounded with a sharp, deafening sound.
His body made a loud thud as it crumpled on the ground. He now laid there, still and lifeless, on the floor of the cave, in a pool of blood.
[[Continue|C7/11/A]]
<%
$(function () {
$(".passage").removeAttr("style");
$("#light-bg").remove();
});
%>
<%= s.say("light", "THE LONELY PIRATE CAPTAIN, IT IS.") %>
<%= s.say("him", "What do I... what... what do I do now?") %>
<%= s.say("light", "STEP INTO THE LIGHT, CAPTAIN.") %>
<%= s.say("him", "But what... what will happen when I do? Will I... will I meet my father? Dad? Are you there?") %>
<%= s.say("light", "THERE IS NO TELLING, CAPTAIN. THE LIGHT WORKS IN MYSTERIOUS WAYS. THE ONLY THING THAT’S FOR SURE IS THAT YOU I’M HERE MY BOY WILL CONTINUE YOUR SEARCH. ALONG WITH US. ALONG WITH MYRIADS THAT CAME BEFORE, AND MYRIADS THAT WILL COME AFTER.") %>
<%= s.say("him", "Will I... will I be... *complete*? Will I be *happy*?") %>
<%= s.say("light", "ONLY ONE WAY TO FIND OUT, CAPTAIN. LET GO. STEP FORWARD. YOUR FEAR - IT IS NOTHING BUT A HARMLESS FOG. EVERYTHING THAT IS, LIES BEYOND. YOU OWE THIS TO YOURSELF. YOU OWE THIS TO ALL OF US.") %>
<%= s.say("him", "Father?") %>
<%= s.say("light", "...") %>
<a0.move-on>Step into the Light</a>
<div.editor>[[C7/12/L]]</div>
<% s.ENDING = "pirate" %>
<%= s.say("light", "THE LOST SPACE CAPTAIN, IT IS.") %>
<%= s.say("her", "I... I’m not lost.") %>
<%= s.say("light", "YOU ARE, CAPTAIN. OH, YOU ARE. THAT IS WHY YOU ARE HERE. YOUR JOURNEY MAY HAVE HELPED YOU, MAYBE NOT. BUT...") %>
<%= s.say("her", "I’ve never killed a man before in my life.") %>
<%= s.say("light", "CAPTAIN, FEAR NOT. EVERY SINGLE DECISION YOU HAVE MADE LED YOU HERE, NOW, BEFORE THE LIGHT. TAKE A DEEP BREATH. LOOK AT THE REAR-VIEW MIRROR. WHAT DO YOU SEE?") %>
<%= s.say("her", "I see... order. And purpose.") %>
<%= s.say("light", "PRECISELY. STEP FORWARD, CAPTAIN. YOUR HAPPINESS MAY I’M HERE, MY LOVE HAVE ELUDED YOU THUS FAR, BUT THIS MAY ALL CHANGE. YOU OWE THIS TO YOURSELF. YOU OWE THIS TO ALL OF US.") %>
<%= s.say("her", "Mom?") %>
<a0.move-on>Step into the Light</a>
<div.editor>[[C7/12/L]]</div>
<% s.ENDING = "astrofarer" %>
<div.editor>
[[C7/13/P]]
[[C7/13/A]]
[[C7/13/Both]]
</div>
<%
$(function () {
$(".passage").removeAttr("style");
let light = $("#light-bg");
light
.delay(3000)
.animate({ width: "100vw" }, 10000)
.delay(3000)
.animate({ opacity: 0 }, 5000);
let ending = "C7/13/";
switch (s.ENDING) {
case "pirate":
ending += "P";
break;
case "astrofarer":
ending += "A";
break;
case "both":
ending += "Both";
break;
}
setTimeout(() => {
light.remove();
story.show(ending);
}, 24000);
});
%>
The Captain slowly opened his eyes. His body was aching. He was standing on his feet, upon a glossy, metallic floor. His eyes needed time to adjust to the blinding light in the room. It felt as if he had been asleep for years. Gradually, he realized he was standing in front of a massive window. Beyond it, there was nothing but the night sky, full of stars - hundreds of them. But one star stood out, larger and brighter than the rest. It even appeared as if it was... closer?
He tried to open his mouth, to speak. He couldn’t. Suddenly, his head was filled with thousands, millions of voices speaking, thinking, all at once. He panicked. But each passing moment stretched like an eternity. He got to meet each and every one of them. He heard their stories, he absorbed their fears and desires. He shared his own with all of them. Before he knew it, he lost himself in the crowd, inside his head.
A young girl in a funny looking costume <a0#door>approached him</a>.
<div#people style="visibility: hidden;">
<%= s.say("assistant", "This is it, Captain. We are finally here.") %>
<a0#speak>Speak</a>
<div#line style="visibility: hidden;">
<%= s.say("KQ", s.KHALIDA_LINE) %>
</div>
</div>
<div.editor>[[End Credits]]</div>
<%
$(function () {
$("#door").on("click", function () {
let people = $("#people");
people.css("opacity", 0);
people.css("visibility", "visible");
people.animate({ opacity: 1 }, s.GLOBALS.TEXT_FADEIN_MS);
$(this).replaceWith(`<span>${$(this).text()}</span>`);
});
$("#speak").on("click", function () {
$(this).remove();
let line = $("#line");
line.css("opacity", 0);
line.css("visibility", "visible");
line.delay(2000).animate({ opacity: 1 }, 4000);
$(".passage").delay(11000).fadeOut(7000);
setTimeout(() => {
story.show("End Credits");
}, 22000);
});
});
%>The Captain slowly opened her eyes. Her body was aching. She was lying on a damp, wooden floor. Her eyes needed time to adjust to the dimly lit room she found herself in. She felt as if she had been asleep for years.
She tried to open her mouth, to speak. But she couldn’t. Suddenly, her head was filled with thousands, millions of voices speaking, thinking, all at once. She panicked. But each passing moment stretched like an eternity. She quickly found out that every one of these voices was as good at speaking as listening. She shared her thoughts, her fears, her desires with each and every one of them. They all made space for her. Space to think, to understand. To find out what was really important, what truly mattered to her. Amidst this vast crowd, for the first time, she felt empowered to carve her own path.
Fast-paced footsteps echoed, descending a wooden staircase outside the room. Then, with a resounding thud, <a0#door>the door swung open.</a>
<div#people style="visibility: hidden;">
<%= s.say("Grace", "Who is this? Is someone there?") %>
<%= s.say("Ben", "Hey there, lad. Naughty, have we been? How about gettin’ the hell out of here? Change of command, ye see. Sounds good?") %>
<a0#speak>Speak</a>
<div#line style="visibility: hidden;">
<%= s.say("P", s.PRISONER_LINE) %>
</div>
</div>
<div.editor>[[End Credits]]</div>
<%
$(function () {
$("#door").on("click", function () {
let people = $("#people");
people.css("opacity", 0);
people.css("visibility", "visible");
people.animate({ opacity: 1 }, s.GLOBALS.TEXT_FADEIN_MS);
$(this).replaceWith(`<span>${$(this).text()}</span>`);
});
$("#speak").on("click", function () {
$(this).remove();
let line = $("#line");
line.css("opacity", 0);
line.css("visibility", "visible");
line.delay(2000).animate({ opacity: 1 }, 4000);
$(".passage").delay(11000).fadeOut(7000);
setTimeout(() => {
story.show("End Credits");
}, 22000);
});
});
%>The Captain slowly opened her eyes. His body was aching. She was standing on his feet, upon a glossy, metallic floor. Or was she lying on a damp, wooden floor? His eyes needed time to adjust to the blinding light in the room. Yet it seemed quite dimly lit. It felt as if he had been asleep for years. Gradually, he realized he was standing in front of a massive window. Beyond it, there was nothing but the night sky, full of stars - hundreds of them. But one star stood out, larger and brighter than the rest. It even appeared as if it was... closer? On the other side of the room, bars. Metallic bars.
She tried to open her mouth, to speak. He couldn’t. Suddenly, her head was filled with thousands, millions of voices speaking, thinking, all at once. He panicked. But each passing moment stretched like an eternity. He got to meet each and every one of them. He heard their stories, he absorbed their fears and desires. He shared his own with all of them. Before he knew it, he lost himself in the crowd, inside his head. She quickly found out that every one of these voices was as good at speaking as listening. She shared her thoughts, her fears, her desires with each and every one of them. They all made space for her. Space to think, to understand. To find out what was really important, what truly mattered to her. Amidst this vast crowd, for the first time, she felt empowered to carve her own path.
And yet, each having found their own place in the crowd, in this new world, they felt each other’s presence wherever, whenever they were. Nothing would be the same ever again. Across space and time, the two of them, the myriads of them, were together. Every single one had something to offer, something to contribute. A unique perspective, a tiny vast world, towards this everlasting, eternal voyage.
Fast-paced footsteps echoed, descending a wooden staircase outside the room. A young girl in a funny looking costume <a0.door>approached him</a>. Then, with a resounding thud, <a0.door>the door swung open</a>.
<div#people style="visibility: hidden;">
<%= s.say("Grace", "Who is this? Is someone there?") %>
<%= s.say("assistant", "This is it, Captain. We are finally here.") %>
<%= s.say("Ben", "Hey there, lad. Naughty, have we been? How about gettin’ the hell out of here? Change of command, ye see. Sounds good?") %>
<a0#speak>Speak</a>
<div#line style="visibility: hidden;">
<%= s.say("P", s.PRISONER_LINE) %>
<%= s.say("KQ", s.KHALIDA_LINE) %>
</div>
</div>
<div.editor>[[End Credits]]</div>
<%
$(function () {
$(".door").on("click", function () {
let people = $("#people");
people.css("opacity", 0);
people.css("visibility", "visible");
people.animate({ opacity: 1 }, s.GLOBALS.TEXT_FADEIN_MS);
$(".door").replaceWith(function () {
return $("<span />", { html: $(this).html() });
});
});
$("#speak").on("click", function () {
$(this).remove();
let line = $("#line");
line.css("opacity", 0);
line.css("visibility", "visible");
line.delay(2000).animate({ opacity: 1 }, 4000);
$(".passage").delay(11000).fadeOut(7000);
setTimeout(() => {
story.show("End Credits");
}, 22000);
});
});
%><div.editor>[[Stats]]</div>
<%
$(function () {
let credits = $("#credits-container");
credits.find("hr").remove();
credits = credits.children();
credits.hide();
let i = 0;
let show_next_credit = function () {
let credit = $(credits[i]);
if (credit.find("a").length > 0) story.show("Stats");
credit.fadeIn(3000).delay(4000).fadeOut(2500);
i++;
if (i < credits.length) setTimeout(show_next_credit, 10000);
};
show_next_credit();
});
%>
<% s.unlockAch("C7") %>
<div#credits-container.flex-container style="justify-content: space-evenly; position: fixed; top: 0; left: 0; width: 100%; height: 100%">
<div.flex-container>
<div>Time read/played: <strong#time>0</strong></div>
<div>Achievements: <strong><span#my-achs>-1</span> / <span#all-achs>-1</span></strong></div>
</div>
<% if (Object.values(s.ACHS).every(x => x.unlocked)) { %>
<div.flex-container><a0#personal-ending>Epilogue</a></div>
<% } else { %>
<div.flex-container><a0#done>OK</a></div>
<% } %>
</div>
<div.editor>
[[Thank You]]
[[Epilogue/1]]
</div>
<%
$(function () {
// Update playtime related stuff in state
const now = new Date();
s.PLAYTIME += now - s.SESSION_STARTED_AT;
s.SESSION_STARTED_AT = now;
$("#time").html(msToTimestring(s.PLAYTIME));
let achs = Object.values(s.ACHS);
$("#my-achs").html(achs.filter((a) => a.unlocked).length);
$("#all-achs").html(achs.length);
$("#done").on("click", () => story.show("Thank You"));
$("#personal-ending").on("click", () => story.show("Epilogue/1"));
});
function msToTimestring(duration) {
const portions = [];
const msInHour = 1000 * 60 * 60;
const hours = Math.trunc(duration / msInHour);
if (hours > 0) {
portions.push(hours + "h");
duration = duration - hours * msInHour;
}
const msInMinute = 1000 * 60;
const minutes = Math.trunc(duration / msInMinute);
if (minutes > 0) {
portions.push(minutes + "m");
duration = duration - minutes * msInMinute;
}
const seconds = Math.trunc(duration / 1000);
if (seconds > 0) {
portions.push(seconds + "s");
}
return portions.join(" ");
}
%><h1>Epilogue</h1>
<hr>
<div#rest>
<% if (s.Q1 === "texts") { %>
The times have been hectic for so long. You’re tired. Always tired. Whenever you can spare the time, you crawl on your couch with a good book, you get lost through its pages, trying to find peace in the midst of the chaos that surrounds you. Your life is fine and all; most people would consider you lucky, privileged even.
<% } else if (s.Q1 === "friends") { %>
The times have been hectic for so long. You’re tired. Always tired. Whenever you can spare the time, you go out with your friends, amused by their jokes, their insults, the deep bonding you share. You get lost in their companionship, trying to find peace in the midst of the chaos that surrounds you. Your life is fine and all; most people would consider you lucky, privileged even.
<% } else if (s.Q1 === "inwards") { %>
The times have been hectic for so long. You’re tired. Always tired. Whenever you can spare the time, you lie quietly on your bed, trying not to do anything but listen to your true untainted thoughts, reflecting inwards, trying to find peace in the midst of the chaos that surrounds you. Your life is fine and all; most people would consider you lucky, privileged even.
<% } else { %>
The times have been hectic for so long. You’re tired. Always tired. Whenever you can spare the time, you listen to your favorite music, or go to a museum you haven’t yet discovered, or to a local art show, soothing your soul with beautiful words, sounds and colors, trying to find peace in the midst of the chaos that surrounds you. Your life is fine and all; most people would consider you lucky, privileged even.
<% } %>
But something is missing.
You’ve lost sight of what matters, of what is interesting, relevant, what is the way you *truly* want to live your life. Looking back, you feel like your path is nothing but a long chain of compromises. Dreams and desires have been left on thrown on the sides, burdens as they were to your everlasting effort to move on, to be someone, to succeed.
That is enough. It is time to [[try something new|Epilogue/2]]. To [[run away for a while|Epilogue/2]]. No one will judge you.
</div>
<%
$(function () {
$("h1").hide().fadeIn(2000);
$("hr").hide();
$("#rest").hide();
setTimeout(() => {
$("hr").fadeIn(s.GLOBALS.TEXT_FADEIN_MS);
$("#rest").fadeIn(s.GLOBALS.TEXT_FADEIN_MS);
}, 2000);
});
%>
<div#credits-container.flex-container style="justify-content: space-evenly; position: fixed; top: 0; left: 0; width: 100%; height: 100%">
<div#thank-you.flex-container style="display: none;">
<h1>Thank you for playing!</h1>
</div>
</div>
<%
$(function () {
$("#thank-you").fadeIn(5000).delay(5000).fadeOut(5000);
setTimeout(() => {
location.reload();
}, 17000);
});
%>
<% if (s.Q2 === "car") { %>
You get up, walk out your front door, and hop into your car. You start driving without a clear destination, but that’s alright, as long as the surroundings are unfamiliar.
In what seems like no time at all, you're on a highway to nowhere. There are some trees on the side, but mostly open fields. It's almost sundown, and you watch the orange sun slowly sink below the horizon in your rear-view mirror.
<% } else if (s.Q2 === "plane") { %>
You hear a car horn. Your taxi is here. Next thing you know, you are at the airport. You buy a ticket to anywhere and board the plane. The engines roar to life as you take off. Your destination remains uncertain, but that’s alright, as long as the landscapes below are unfamiliar.
In what feels like no time at all, you find yourself flying towards an unknown destination. A patchwork of fields and towns passes below, but mostly open skies stretch out around you. The sun, a glowing ball of orange, gently sinks below the horizon outside your window, signaling the approach of evening.
<% } else if (s.Q2 === "bicycle") { %>
You push yourself up from your chair, step outside, and swing onto your bicycle. Your feet pedal rhythmically as you start riding. Your destination is anyone's guess, but that’s alright, as long as the scenery remains unfamiliar.
In what feels like just a few moments, you find yourself cycling down a path to nowhere in particular. A mix of trees and open spaces surrounds you. The sun, a golden orb, slowly descends below the horizon, casting an orange hue across the landscape, and you pedal on into the approaching dusk.
<% } else if (s.Q2 === "feet") { %>
You stand up, step outside, and start walking. Your destination is undefined, but that’s alright, as long as the surroundings stay unfamiliar.
In what feels like only moments, you find yourself strolling down a path to an unknown location. There's a mix of trees and open spaces around you. The sun, an orange ball in the sky, slowly sinks below the horizon, casting a warm glow as you continue your walk into the approaching evening.
<% } else { %>
You hear a car horn. Your taxi is here. Next thing you know, you are at the pier. You buy a ticket to anywhere and board the ship. The engines hum to life as you set sail. Your destination remains uncertain, but that’s alright, as long as the sights around you are unfamiliar.
In what feels like no time at all, you find yourself cruising across the open sea, heading toward an unknown destination. There's a mix of islands and open water around you. The sun, a glowing ball of orange, gently dips below the horizon, painting the sky in warm hues as you sail into the approaching night.
<% } %>
Suddenly, your phone buzzed in your pocket.
You take it out and take a look. A text, sender unknown.
<a0#open-text>Open the text</a>
<div#the-end>
<%= s.say("you", "What is lost... will be found?") %>
</div>
<div.editor>[[Thank You]]</div>
<%
$(function () {
$("#the-end").hide();
$("#open-text").on("click", function () {
$("#open-text").hide();
$("#the-end").delay(2000).fadeIn(4000);
$(".passage").delay(9000).fadeOut(7000);
setTimeout(() => {
story.show("Thank You");
}, 18000);
});
});
%>
<% if (s.TL === "PT") { %>
<%= s.say("C", "It’s time, Ben. I’m going.") %>
<%= s.say("Ben", "Are you sure, Capt’n? Nothin’ left undone?") %>
<% } else { %>
<%= s.say("C", "It’s time, Crow. I’m going.") %>
<%= s.say("Crow", "Are you sure, Captain? Nothing left undone?") %>
<% } %>
[["Yes. I'm going."|C6/C/1]]
[["On second thought..."|PNR Abort]]
<%
s.CHAPTER = "6C";
s.TL = "PT";
s.setTLColor();
%>
<%= s.say("C", "Yes, Ben. Yes. I’m ready.") %>
<%= s.say("Ben", "Alright, then. Time to give you this then, I guess...") %>
Ben pulled an old rusty flintlock pistol from his belt and handed it over to the Captain.
<%= s.say("Ben", "This... this was your father’s. He gave it to me as a present, along with the Book. It pains me to part ways with it, but... I *really* believe that it belongs with you, Capt’n.") %>
<%= s.say("C", "I... thank you so much, Ben. I don’t know what to say.") %>
<%= s.say("Ben", "No need to say anythin’, Capt’n. Just be safe.") %>
Ben gave the Captain a big, heartfelt hug. The Captain felt startled at first, but it didn’t take him long to hug him back.
<%= s.say("Ben", "Best of luck, my dear boy. Until we meet again.") %>
[[Continue|C6/C/2]]
<% if (s.TL === "PT") { %>
<%= s.say("C", "No, you’re right. I need to check some things first.") %>
<%= s.say("Ben", "No worries, Capt’n. Take your time. This monster-lookin’ rock won’t go anywhere. I mean, probably...") %>
[[Back|Forecastle]]
<% } else { %>
<%= s.say("C", "No, you’re right. I need to check some things first.") %>
<%= s.say("Crow", "No worries, Captain. Take your time. We can travel to the Crab Pulsar whenever you feel ready.") %>
[[Back|Computer]]
<% } %>
<%
s.TL = "ST";
s.setTLColor();
%>
<%= s.say("Crow", "This is the final stretch, Captain. Time to visit the Crab Pulsar.") %>
<%
s.astronav = s.ASTRONAV_LVLS.level8;
s.astronav.id = 8;
s.astronav.next_psg = "AstroNav/Success";
%>
[["Let's go."|AstroNav]]
The Captain stared out of the ship, directly ahead. The Crab Pulsar loomed larger with each passing second, a blend of colors she'd never seen before. The ship began to shake violently.
<%= s.say("Crow", "Ship's hull under stress. Engine condition unstable.") %>
Suddenly, a vessel-shaped object emerged from the heart of the Pulsar.
<%= s.say("C", "Is this... I've seen this in books. It's...") %>
<%= s.say("Crow", "All systems under extreme pressure. Ship condition critical.") %>
<%= s.say("C", "...a precolonial Earth naval ship?") %>
In an instant, the ship ceased its shaking. Silence. Everything plunged into darkness.
[["Where are we?"|C6/C/4]]
<%= s.say("C", "What... what happened? Where are we?") %>
<%= s.say("Crow", "Unfortunately, Captain, I have no access to location data. No connection to the Academy, either. As a matter of fact, the communications module seems entirely inoperational.") %>
<%= s.say("C", "Could it... could it be that we...") %>
<%= s.say("Crow", "Seems highly unlikely, Captain, but then again, it is not known what *exactly* lies at the heart of...") %>
<%= s.say("C", "The Crab Nebula. We are *inside* the Crab Pulsar.") %>
<%= s.say("Crow", "Processing... It would be a possible, yet not so probable, explanation of our current situation.") %>
<%= s.say("C", "I can’t see anything through the viewport.") %>
<%= s.say("Crow", "I do not seem to be able to scan our surroundings either, Captain.") %>
A moment of silence followed.
<%= s.say("C", "I’m going out there.") %>
<%= s.say("Crow", "Captain, wait.") %>
<%= s.say("C", "What is it?") %>
<%= s.say("Crow", "Before you exit the ship, there is a protocol that must be followed in cases where the ship’s Captain disembarks and the data regarding the ship’s surroundings are scarce to non-existent. You need to take this with you.") %>
A small hidden hatch opened next to the Captain’s feet. The Captain leaned on her knees and collected the plasma gun that was inside.
<%= s.say("C", "Well... thanks, Crow. But I really hope I won’t need that.") %>
<%= s.say("Crow", "Me too, Captain.") %>
<%= s.say("C", "Alright, I’m going. Wish me luck!") %>
<%= s.say("Crow", "Best of luck, Captain. I hope that, when we meet each other again, you will have found what you have been looking for.") %>
The Captain wore her helmet. While securing it, she realized that her neck felt lighter; her mother’s necklace was missing. No time to worry about it. She would search for it when she would come back on board.
She took a deep breath and [[stepped out of the ship|C6/C/5]].
<%
s.TL = "CT";
s.setTLColor();
%>
The Captain found himself in a damp, dark cave. The only way forward was a short, narrow passage. He got down on the ground and began crawling through it.
It felt like an eternity before he finally saw an opening at the end of the tunnel. He reached it, got out, and stood up in another, larger cave.
As he rose, he noticed a figure on the opposite side of the cave, just like him. They had emerged from a narrow tunnel and stood up as well, with the exact same movements and timing.
<%= s.say("C", "Who are you?") %>
<%= s.say("C", "No, who are *you*?") %>
[[Continue|Chapter 7]]
<%= s.say("Crow", "We are currently next to the beacon, Captain. As I mentioned before, we can use the external mechanical arm of the ship to collect it. After you repair it, that is.") %>
<%
s.FB_LVL = 6;
s.ATTEMPTING_ARM = true;
%>
[["Let's do this."|Fusebox]]
<%= s.say("Crow", "I have identified the coordinates of the origin of the peculiar signal, Captain. However, I should warn you that quick scans ahead reveal a quite formidable navigational challenge. Moreover, when we reach the beacon, we may be able to collect it. To do so, we will need to utilize the external mechanical arm of the ship. Unfortunately, its fuse box was also fried during the shockwave. So, if the need arises, you will have to repair it as well.") %>
<%= s.say("C", "Alright, then. I guess a couple of PILLs are in order?") %>
<%= s.say("Crow", "Affirmative, Captain. I took the liberty to order them beforehand. Downloading them to your tablet now.") %>
<%= s.getPILL(0) %>
<%= s.getPILL(1) %>
<%= s.say("C", "Great. I’ll be back in a jiffy.") %>
[[Back|Computer]]
<% s.ASKED_ABOUT_SIGNAL = true %>
<%= s.say("Crow", "Whenever you are ready, Captain.") %>
[["Let's go."|AstroNav]]
<%
if (s.astronav.id === -1 || s.astronav.id === undefined) {
s.astronav = s.ASTRONAV_LVLS.level9;
s.astronav.id = 9;
s.astronav.next_psg = "AstroNav/Success";
}
%>
<%= s.say("C", "Let's get this thing, then.") %>
<%= s.say("Crow", "Extending external mechanical arm...") %>
<%= s.say("Crow", "Arm extended. Securing beacon...") %>
<%= s.say("Crow", "Beacon secured. Retracting external mechanical arm...") %>
<%= s.say("Crow", "Arm retracted. Guiding beacon towards the Captain via the internal cargo delivering system...") %>
<%= s.say("Crow", "Done.") %>
A small compartment opened at the side of the Central Computer’s mainframe. The Captain reached inside and picked up the beacon.
<%= s.say("C", "That's strange. It's a small, black, shapeless object attached to a thin, rusty chain.") %>
<%= s.say("Crow", "My scans identify the object's material as wood. Additionally, I no longer detect any signal emissions.") %>
<%= s.say("C", "What is this, Crow?") %>
<%= s.say("Crow", "I'm afraid I cannot help you, Captain. I am as perplexed as you are. Keep it with you, just in case. You never know where or *when* its usefulness or purpose will become apparent.") %>
<%
s.FOUND_BEACON = true;
s.i.both.push({
name: {
PT: "An eerie medallion",
ST: "The beacon",
},
description: {
PT: "A peculiar, black medallion of sorts, attached to a rusty chain.",
ST: "Now emitting no signal, a shapeless black medallion of sorts, attached to a rusty chain.",
},
passage: {
PT: "Medallion",
},
});
%>
[[Back|Computer]]
# An eerie medallion
<hr>
The Captain found a strange looking item in one of his pockets. A peculiar, black medallion of sorts, attached to a rusty chain. Only one person on board could possibly have any idea what this is...
<% s.EXAMINED_MEDALLION = true %>
[[Back|Inventory]]
<%= s.say("C", "Is this... I found it in my pocket, I have no idea how it ended up there, maybe... Do you have any idea what this is?") %>
The Prisoner said nothing. Instead, he reached for the medallion with a gentle touch, taking it from the Captain's hand. Then, his arm disappeared into the darkness once again. After some time, the Captain thought he heard the Prisoner softly sobbing.
<%= s.say("P", "You have... you have *no* idea what this means to me. I thought I had lost it forever. There are no words to express my gratitude, Captain. I thank you. I thank you from the bottom of my heart.") %>
<%= s.improveRel("P", "got back what was lost long ago, thanks to the Captain", true) %>
<%= s.say("C", "That’s alright, mate. I guess you... you can keep it. Yeah. Alright.") %>
<%
s.GIVEN_MEDALLION = true;
s.remove("An eerie medallion");
%>
<%= story.render("Prisoner/Options") %>
<% if (!s.PRINTER_REPAIRED) { %>
The giclée printer was made inoperable after the shockwave. Its fuse box must be repaired.
<% s.FB_LVL = 5 %>
[[Repair giclée printer fuse box|Fusebox]]
<% } else if (!s.PRINTER_USED) { %>
The giclée printer is a highly advanced machine that produces high-quality replicas of paintings, with an unparalleled ability to capture the intricate details and to achieve the maximum color accuracy.
The TAAF offers this piece of equipment in order to enable the Honors Programme participant to personalize their private quarters.
<a0#turner.print>Print "Rockets and Blue Lights", by Joseph Turner</a>
<a0#leger.print>Print "La Ville", by Fernand Léger</a>
<a0#dali.print>Print "La Persistència de la Memòria", by Salvador Dalí</a>
<% } else { %>
The giclée printer cannot print any more artworks. The TAAF apologizes.
<% } %>
[[Back|Computer]]
<div.editor>[[Printer/Painting]]</div>
<%
$(function () {
$(".print").on("click", function () {
s.PRINTER_USED = true;
s.PAINTING = $(this).attr("id");
story.show("Printer/Painting");
});
});
%>The printer suddenly sprang to life, its mechanical components whirring to action and colorful lights blinking with energy. In the blink of an eye, a high-quality canvas emerged from the front of the printer, fresh and pristine.
The Captain took it, went to her room, and hung it on the wall opposite to the porthole. She paused to admire it.
<%= s.say("C", "Now, yes. That's more like it.") %>
[[Back|Captain's Room]]
<%= s.say("C", "I think I know of someone who would appreciate such a thing a lot more than me.") %>
The Captain took down the painting and left his cabin, heading to the galley where Eleanor Ruby was busy cooking.
<%= s.say("Eleanor", "Oh, hello there, Captain dear. Came to eat somethin’, I hope.") %>
<%= s.say("C", "Actually, I... I wanted to give you this. I just found it in my room, hadn’t noticed it before. I just... when I saw it, I... I don’t know. Your boy was the first thing that came to my mind. I think you should have it.") %>
Eleanor froze in place. After a few moments, she gently took the painting from the Captain’s hands.
<%= s.say("Eleanor", "Is this... Is this for real? You mean it? My God, it’s so beautiful... The colors, the composition... I’ve never seen anything like it. Oh, how my boy would have lost his mind over this. Captain dear, you... you truly mean that? I can keep it?") %>
<%= s.say("C", "Sure, Ms Ruby. It’s of no use to me, and God knows how much more you need it.") %>
Eleanor bursted into tears and embraced the Captain.
<%= s.say("Eleanor", "Thank you, my dear boy. Thank you from the depths of my heart. You have no idea what this means to me.") %>
Eleanor hung the painting on the wall above the cooking bench.
<%= s.say("Eleanor", "There. Now the wall is bare no more. Thanks to you, Captain. Now I have something to remember my boy by. Something real. My little boy... May you be forever blessed, Captain dear.") %>
<%= s.improveRel("Eleanor", "received the most precious gift from the Captain", true) %>
<% s.PAINTING_GIVEN = true %>
<%= story.render("Eleanor/Options") %>
<%= s.say("C", "I was wondering if you were also... affected by this thing going on for a couple of days now. Regarding missing items.") %>
<%= s.say("Grace", "I... I really wouldn’t like to talk about it, Captain. It... it’s quite embarrassing actually.") %>
<%= s.say("C", "Oh, ehm... Ok. But you *do* have stuff missing, don’t you?") %>
<%= s.say("Grace", "Yes. Yes, I do.") %>
<%= s.say("C", "And when did this happen?") %>
<%= s.say("Grace", "First time, about a week ago. But I figured I might have lost them. But it happened again yesterday, as well as the day before. So it can’t be of my own negligence. Someone... someone must have snatched them.") %>
<%= s.say("C", "I see. I’ll get to the bottom of this. I promise.") %>
<% s.ASKED_GRACE_MISSING = true %>
<%= story.render("Grace/Options") %>
<%= s.say("C", "Hey, Billy. I was wondering... Do you have anything missing? I mean personal items and such.") %>
<%= s.say("Billy", "Oh, you *bet* I have, Cap’n. Many o’ me clothes have mysteriously disappeared in the last couple o’ days. Me favorite boots, too! Now I have to walk around in these horrendous shoes I borrowed from Ben. But all these are not nearly as important as me ol’ deck o’ cards. Been missin’ that since last Monday, I think. Or it could be Tuesday.") %>
<%= s.say("C", "You think a card deck is more important than your clothes and shoes?") %>
Billy pointed to his face.
<%= s.say("Billy", "*Look* at that face, Cap’n. Does it strike ye as the looks of a Dudo player? No! Poker ‘s my middle name! But had to play *somethin’*, so I managed to get these dice from here and there.") %>
<%= s.say("C", "Ok I guess, but still...") %>
<%= s.say("Billy", "It’s also my father’s deck. I took it from his corpse. After I slit the bastard’s throat, that is.") %>
<%= s.say("C", "I see. You *could* have started with this bit of information.") %>
<%= s.say("Billy", "To tell you the truth, Cap’n, I just remembered it.") %>
<%= s.say("C", "Right... Don’t worry, boy. I’ll find your stuff for you. I’ll get to the bottom of this.") %>
<% s.ASKED_BILLY_MISSING = true %>
<%= story.render("Billy/Options") %>
<%= s.say("C", "Hello, Ms Ruby. I...") %>
<%= s.say("Eleanor", "Oh hello to you, Captain dear. I see you keep ignorin’ my advice. You look like a man who has skipped a lot of proper meals...") %>
<%= s.say("C", "Listen, Ms Ruby, I wanted to ask you whether there is stuff missing from your personal quarters.") %>
<%= s.say("Eleanor", "Well, you *are* in my private quarters right now, Captain dear!") %>
Eleanor pointed to a rug at a small corner of the galley.
<%= s.say("Eleanor", "And that is my bed. I really came aboard with next to no belongings. And I really don’t mind. This is my kingdom now, this galley. Ben offered me a place in the crew’s quarters, but I... I *really* prefer to be alone at night, Captain dear.") %>
<%= s.say("C", "Oh... I... I understand. So... so nothing’s been missing, then?") %>
<%= s.say("Eleanor", "How could it, Captain dear? I’m here all day and night long. When I sleep, I lock the galley from the inside - I convinced Jack to give me the keys, you see. It’s my room, after all! But why do you ask, Captain dear? Somethin’ nasty goin’ on?") %>
<%= s.say("C", "I wouldn’t worry about it, Ms Ruby. It seems to me that you are perfectly settled in your own kingdom over here.") %>
<% s.ASKED_ELEANOR_MISSING = true %>
<%= story.render("Eleanor/Options") %>
<%= s.say("C", "Hi there, Mr Lockney.") %>
<%= s.say("Jack", "Hi there, mate. I mean, Capt’n.") %>
<%= s.say("C", "Have you lost anything lately, Mr Lockney? Any personal items perhaps?") %>
Jack grew anxious. Some sweat drops started to form on his forehead.
<%= s.say("Jack", "Well mate, I... I lost the key to the crew’s quarters, alright? There, I said it. I’m sorry. I *never* lose me keys, *never*. Someone *must* have snatched it from under me nose. Maybe while I was asleep or somethin’, I don’t know.") %>
The Captain grinned slightly. Jack noticed it.
<%= s.say("Jack", "Why the funny face, mate? Anything amusing to you?") %>
<%= s.say("C", "Yes, as a matter of fact. Nothing else missing?") %>
<%= s.say("Jack", "No, nothin’. Why? Should there be anythin’ missing, mate?") %>
<%= s.say("C", "I’m your Captain, *mate*. Rings any bells?") %>
Jack looked down and said nothing.
<%= s.say("C", "I guess it does.") %>
<% s.ASKED_JACK_MISSING = true %>
<%= story.render("Jack/Options") %>